Oracle เทียบเท่ากับฟังก์ชัน IsNull () ของ SQL Server คืออะไร


110

ใน SQL Server เราสามารถพิมพ์IsNull()เพื่อตรวจสอบว่าฟิลด์เป็นโมฆะหรือไม่ มีฟังก์ชันเทียบเท่าใน PL / SQL หรือไม่?

คำตอบ:


131

coalesceได้รับการสนับสนุนทั้งใน Oracle และ SQL Server และทำหน้าที่เป็นหลักการทำงานเช่นเดียวและnvl isnull(มีข้อแตกต่างที่สำคัญบางอย่างcoalesceสามารถรับอาร์กิวเมนต์ได้ตามจำนวนที่กำหนดและส่งกลับค่าอาร์กิวเมนต์แรกที่ไม่ใช่ค่าว่างประเภทการส่งคืนจะisnullตรงกับประเภทของอาร์กิวเมนต์แรกซึ่งไม่เป็นจริงสำหรับcoalesceอย่างน้อยใน SQL Server)


9
+1: COALESCEเป็น ANSI ซึ่งสนับสนุนโดย Postgres, MySQL ... ข้อแม้เดียวคือไม่จำเป็นต้องทำงานได้เร็วเท่ากับไวยากรณ์ดั้งเดิม
OMG Ponies

17
+1 สำหรับCOALESCEซึ่งมีประโยชน์ที่สำคัญอย่างหนึ่งคือNVLทำการประเมินทางลัดในขณะที่NVLประเมินทั้งสองพารามิเตอร์ เปรียบเทียบCOALESCE(1,my_expensive_function)กับNVL(1,my_expensive_function).
Jeffrey Kemp

นี้COALESE()ฟังก์ชั่นที่ดีและคุณสามารถอ่านเกี่ยวกับเรื่องMSDOC> เชื่อมต่อกัน - ไวยากรณ์เดียวกันนี้ทำงานใน Oracle หากข้อมูลของคุณมีสตริงว่างแทน NULLS COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"คุณอาจจำเป็นบางอย่างเช่นนี้
SherlockSpreadsheets

108

แทนที่จะISNULL()ใช้NVL().

T-SQL:

SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable

PL / SQL:

SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable

2
ตอบคำถามอย่างชัดเจน
Gary Huckabone


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.