2009-07-24 13 views
0

これは先日私を得ました。あなたは何を返すと期待しますか?空白UNIONバグ

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

2番目のSELECTのスペースに注目してください。 明らかにSQL 2000と2005の両方が1つの結果を返します。そのUNION(そしてUNION ALLではなく)でも。

これについてはオンラインの書籍には何も見えません。それはなぜ起こるのですか?私はバグだと思っています。正当な理由があるのですか?

答えて

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' 

これは "等しい"を出力します

+1

さて、私は$^@&に浸ります。あなたが時折読む啓発のこと... –