-1

これは先日私を手に入れました。次のものが何を返すと思いますか?

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

2番目のSELECTのスペースに注意してください。どうやらSQL2000と2005はどちらも1つの結果を返します。それはUNIONですが(UNION ALLではありません)。

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

4

1 に答える 1

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'

これは「等しい」と出力します

于 2009-07-24T21:58:01.540 に答える