คำถามติดแท็ก coalesce

8
SQL Server อ่านฟังก์ชัน COALESCE ทั้งหมดแม้ว่าอาร์กิวเมนต์แรกไม่ใช่ NULL หรือไม่
ฉันใช้COALESCEฟังก์ชันT-SQL โดยที่อาร์กิวเมนต์แรกจะไม่เป็นโมฆะในเวลาประมาณ 95% ของเวลาที่รัน หากอาร์กิวเมนต์แรกคืออาร์กิวเมนต์NULLที่สองนั้นเป็นกระบวนการที่ค่อนข้างยาว: SELECT COALESCE(c.FirstName ,(SELECT TOP 1 b.FirstName FROM TableA a JOIN TableB b ON .....) ) ตัวอย่างเช่นc.FirstName = 'John'ถ้า SQL Server จะยังเรียกใช้แบบสอบถามย่อยหรือไม่ ฉันรู้ว่าด้วยIIF()ฟังก์ชั่นVB.NET ถ้าอาร์กิวเมนต์ที่สองคือ True รหัสยังคงอ่านอาร์กิวเมนต์ที่สาม (แม้ว่ามันจะไม่ถูกใช้)

1
'การอ้างอิงคอลัมน์ไม่ชัดเจน' เมื่อเพิ่มองค์ประกอบลงในตาราง
ฉันใช้ PostgreSQL เป็นฐานข้อมูลของฉัน และฉันจำเป็นต้องสร้างรายการในฐานข้อมูลและหากมีอยู่แล้วเพียงแค่อัปเดตฟิลด์ แต่ควรอัปเดตหนึ่งในฟิลด์ต่อไปหากยังไม่ได้ตั้งค่า ฉันใช้ข้อมูลจากคำถามนี้: /programming/13305878/dont-update-column-if-update-value-is-nullมันค่อนข้างเกี่ยวข้องกับสิ่งที่ฉันมี ฉันพยายามที่จะใช้แบบสอบถามนี้ แต่เมื่อฉันเรียกใช้มันข้อผิดพลาดกับColumn reference 'affiliate_code' is ambiguous: INSERT INTO accounts (id, token, affiliate_code) VALUES (value1, value2, value3) ON CONFLICT (id) DO UPDATE SET token = value2, affiliate_code = COALESCE(affiliate_code, value3); (ค่าจริงถูกแทนที่แน่นอน) หากฉันแทนที่affiliate_code = COALESCE(affiliate_code, value3)ด้วยaffiliate_code = value3ทุกอย่างทำงานได้ แต่ไม่ใช่ในแบบที่ฉันต้องการให้ทำงาน ฉันจะทำงานนี้ได้อย่างไร นี่คือวิธีการกำหนดตารางของฉัน: CREATE TABLE accounts ( …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.