我有一個簡單的查詢(實際查詢將更加複雜,它是一個動態的查詢)SQL LIKE NULL是否爲所有數據庫的有效語法?
SELECT * FROM Employee WHERE @firstName IS NULL OR firstName LIKE @firstName
@firstName將原樣傳遞
- NULL
- '%名稱%'
當@firstName作爲'%name%'傳遞時。該查詢將正常工作。
當@firstName作爲NULL傳遞時。該查詢將
SELECT * FROM Employee WHERE NULL IS NULL OR firstName LIKE NULL
// This query is valid syntax on MSSQL and return all employees
// because NULL IS NULL evaluated as TRUE
// And firstName LIKE NULL evaluated as FALSE -- I guess
我的問題是
是的firstName LIKE NULL上的所有SQL數據庫都有效?
它會一直評估爲FALSE嗎?
我已經檢查了這樣的語法https://www.w3schools.com/SQl/sql_like.asp
這https://msdn.microsoft.com/en-us/library/ms179859.aspx
但我沒有找到我的答案。謝謝!
謝謝你的回答! Upvoted! – Loc
我在Mssql,MySQL,PostgreSQL,SQLite上測試了LIKE NULL。他們工作得很好。但是它在Oracle數據庫上失敗了。 – Loc
*如何失敗?在Oracle 11.2中它對我來說工作得很好。我真的懷疑任何Oracle版本都不能正確處理這個問題。這將是一個嚴重的錯誤。 –