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)
Showing posts with label IsNull. Show all posts
Showing posts with label IsNull. Show all posts
Friday, March 13, 2020
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
Subscribe to:
Posts (Atom)

