【发布时间】:2017-02-27 16:40:19
【问题描述】:
我有一个简单的查询(实际查询会更复杂,是动态查询)
SELECT * FROM Employee WHERE @firstName IS NULL OR firstName LIKE @firstName
@firstName 将被传递为
- 空
- '%name%'
当@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
我的问题是
firstName LIKE NULL 对所有 SQL 数据库都有效吗?它是否总是被评估为 FALSE?
我已经检查了这个 LIKE 语法https://www.w3schools.com/SQl/sql_like.asp
还有这个https://msdn.microsoft.com/en-us/library/ms179859.aspx
但我没有找到答案。谢谢!
【问题讨论】: