Showing posts with label IsNull. Show all posts
Showing posts with label IsNull. Show all posts

Friday, March 13, 2020

SQL Server, ข้อแตกต่างระหว่าง COALESCE() กับ ISNULL(), เปรียบเทียบ COALESCE() กับ CASE()

COALESCE คือคำสั่งที่ใช้ในการแปลงค่าจาก NULL เป็น ค่าที่ต้องการ

Syntax : COALESCE(expression1,expression2,…n,VALUE)
** VALUE คือค่าที่ต้องการเปลี่ยนเมื่อ expression เป็น NULL เช่น ต้องการให้แปลง NULL เป็น 10 ก็ใส่ VALUE เป็น 10 **

ตัวอย่างที่ 1
COALESCE(NULL,NULL,’show value’) => ผล : show value
COALESCE(1,2,’show value’) => ผล : 1
COALESCE(1,NULL,’show value’) => ผล : 1
COALESCE(NULL,2,’show value’) => ผล : 2

Syntax : ISNULL ( check_expression , replacement_value )

ตัวอย่างที่ 2
where isnull(name,”) <> ”
มีค่าเท่ากับ  where name is not null and name <> ”
มีค่าเท่ากับ  where name <> ”

ตัวอย่างที่ 3
SELECT ISNULL(Weight, 0) FROM tb_DimProduct

ข้อแตกต่างระหว่าง COALESCE() กับ NULL()
1. เมื่อเจอค่า NULL : ISNULL จะแปลงค่าเป็น int แต่ COALESCE เราจะต้องกำหนด data type
2. ISNULL สามารถใช้ได้กับแค่ 2 parameters เท่านั้น ในขณะที่ COALESCE สามารถระบุ parameters ได้มากกว่า 2

เปรียบเทียบ COALESCE() กับ CASE()
— CASE expression:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
WHEN (expression2 IS NOT NULL) THEN expression2
ELSE expressionN
— COALESCE expression:
SELECT COALESCE(expression1,expression2,expressionN)

Monday, November 27, 2017

แก้ปัญหาไม่แสดงผลตามต้องการเหตุจากบางคอลัมน์ในสูตรเป็น NULL


  • ปัญหาที่พบคือบาง Record นั้น ColumnB ไม่มีข้อมูล (NULL) ทำให้สูตรที่มี ColumnB อยู่ด้วยเป็น NULL ตามไปด้วย แต่ที่ต้องการคือถ้า Record ไหนที่ ColumnB เป็น NULL ก็กำหนดค่าให้มีค่าเป็น 0 ซะ
  • แก้ปัญหาโดยใช้ IsNull มาช่วยเช่น
    • ถ้าเป็นคำสั่งใน SQL Server
      • SELECT YourColumn, ColumnA, ColumnB, IsNull(ColumnA,0)+IsNull(ColumnB,0) As SumAandB FROM YourTable
  • จะได้ผลตามที่ต้องการ
 
  • ถ้าเป็นใน Crystal Report ก็อาจต้องสร้าง Formula fields เพิ่มเช่น 
    • IF IsNull(ColumnB) THEN 0 ELSE ColumnB