这个是前几天给我的。您希望以下内容返回什么?
SELECT 'X' AS line
UNION
SELECT 'X ' AS line
注意第二个 SELECT 中的空格。显然 SQL 2000 和 2005 都返回 1 个结果。即使它是一个 UNION(而不是一个 UNION ALL)。
我在网上的书籍中没有看到任何关于此的内容。为什么会这样?我猜这是一个错误。是不是有正当理由?
这个是前几天给我的。您希望以下内容返回什么?
SELECT 'X' AS line
UNION
SELECT 'X ' AS line
注意第二个 SELECT 中的空格。显然 SQL 2000 和 2005 都返回 1 个结果。即使它是一个 UNION(而不是一个 UNION ALL)。
我在网上的书籍中没有看到任何关于此的内容。为什么会这样?我猜这是一个错误。是不是有正当理由?
在 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'
这打印“相等”