SQL Server 2008R2如何处理空间

时间:2014-04-15 11:47:48

标签: sql sql-server tsql

我刚刚意识到,SQL Server的以下行为

SELECT
    1
WHERE
    ' ' = '        '

看起来只有1个空格的字符串等于8个空格的字符串。任何人都可以解释,为什么会这样,以及如何比较空字符串?

2 个答案:

答案 0 :(得分:0)

SQL Server遵循ANSI / ISO SQL-92规范(第8.2节,一般规则#3),介绍如何将字符串与空格进行比较。 ANSI标准要求对比较中使用的字符串进行填充,以便在比较它们之前使它们的长度匹配。填充直接影响WHERE和HAVING子句谓词以及其他Transact-SQL字符串比较的语义。例如,Transact-SQL考虑字符串' abc'和' abc'相当于大多数比较操作

使用DataLength比较where子句。

http://msdn.microsoft.com/en-in/library/ms173486.aspx

答案 1 :(得分:-1)

比较空字符串

SELECT *
FROM tableName
WHERE LTRIM(RTRIM(columnName))=''