ใน SQL Server เราสามารถพิมพ์IsNull()
เพื่อตรวจสอบว่าฟิลด์เป็นโมฆะหรือไม่ มีฟังก์ชันเทียบเท่าใน PL / SQL หรือไม่?
ใน SQL Server เราสามารถพิมพ์IsNull()
เพื่อตรวจสอบว่าฟิลด์เป็นโมฆะหรือไม่ มีฟังก์ชันเทียบเท่าใน PL / SQL หรือไม่?
คำตอบ:
coalesce
ได้รับการสนับสนุนทั้งใน Oracle และ SQL Server และทำหน้าที่เป็นหลักการทำงานเช่นเดียวและnvl
isnull
(มีข้อแตกต่างที่สำคัญบางอย่างcoalesce
สามารถรับอาร์กิวเมนต์ได้ตามจำนวนที่กำหนดและส่งกลับค่าอาร์กิวเมนต์แรกที่ไม่ใช่ค่าว่างประเภทการส่งคืนจะisnull
ตรงกับประเภทของอาร์กิวเมนต์แรกซึ่งไม่เป็นจริงสำหรับcoalesce
อย่างน้อยใน SQL Server)
COALESCE
ซึ่งมีประโยชน์ที่สำคัญอย่างหนึ่งคือNVL
ทำการประเมินทางลัดในขณะที่NVL
ประเมินทั้งสองพารามิเตอร์ เปรียบเทียบCOALESCE(1,my_expensive_function)
กับNVL(1,my_expensive_function)
.
COALESE()
ฟังก์ชั่นที่ดีและคุณสามารถอ่านเกี่ยวกับเรื่องMSDOC> เชื่อมต่อกัน - ไวยากรณ์เดียวกันนี้ทำงานใน Oracle หากข้อมูลของคุณมีสตริงว่างแทน NULLS COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"
คุณอาจจำเป็นบางอย่างเช่นนี้
แทนที่จะISNULL()
ใช้NVL()
.
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
ใช้NVL2
ด้านล่างหากคุณต้องการคืนค่าอื่นจากfield_to_check
:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
การใช้งาน: ORACLE / PLSQL: NVL2 FUNCTION
if x is not null then...
คุณสามารถใช้เงื่อนไข มันไม่ใช่หน้าที่ นอกจากนี้ยังมีNVL()
ฟังก์ชั่นเป็นตัวอย่างที่ดีของการใช้งานที่นี่: ฟังก์ชั่น NVL โทษ
COALESCE
เป็น ANSI ซึ่งสนับสนุนโดย Postgres, MySQL ... ข้อแม้เดียวคือไม่จำเป็นต้องทำงานได้เร็วเท่ากับไวยากรณ์ดั้งเดิม