我有一个简单的查询(实际查询将更加复杂,它是一个动态的查询)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版本都不能正确处理这个问题。这将是一个严重的错误。 –