空白UNION错误

时间:2009-07-24 21:31:16

标签: sql-server whitespace ansi

前几天这个人找到了我。您希望以下内容返回什么?

SELECT 'X' AS line
UNION
SELECT 'X ' AS line

注意第二个SELECT中的空格。 显然,SQL 2000和2005都返回1个结果。即使它是一个UNION(而不是UNION ALL)。

关于这一点,我没有在网上看到任何内容。为什么会这样?我猜这是一个错误。它是否有正当理由?

1 个答案:

答案 0 :(得分:6)

指定尾随空格在ANSI SQL标准中以特殊方式处理:

http://support.microsoft.com/default.aspx/kb/316626

http://support.microsoft.com/kb/154886/EN-US/

我不确定二进制排序规则是否可以解决这个问题:

IF 'X ' COLLATE Latin1_General_BIN = 'X' COLLATE Latin1_General_BIN 
    PRINT 'Equal'

打印“Equal”