我刚刚意识到,SQL Server的以下行为
SELECT
1
WHERE
' ' = ' '
看起来只有1个空格的字符串等于8个空格的字符串。任何人都可以解释,为什么会这样,以及如何比较空字符串?
答案 0 :(得分:0)
SQL Server遵循ANSI / ISO SQL-92规范(第8.2节,一般规则#3),介绍如何将字符串与空格进行比较。 ANSI标准要求对比较中使用的字符串进行填充,以便在比较它们之前使它们的长度匹配。填充直接影响WHERE和HAVING子句谓词以及其他Transact-SQL字符串比较的语义。例如,Transact-SQL考虑字符串' abc'和' abc'相当于大多数比较操作
使用DataLength比较where子句。
答案 1 :(得分:-1)
比较空字符串
SELECT *
FROM tableName
WHERE LTRIM(RTRIM(columnName))=''