Frage

Dieses hat mich neulich. Was würden Sie erwarten, dass die folgenden zurück?

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

Beachten Sie den Raum in der zweiten SELECT. Nun offenbar SQL 2000 und 2005 beide zurückgeben 1 Ergebnis. obwohl seine Selbst eine UNION (und keine UNION ALL).

Es gibt nichts, was ich in Büchern auf Linie darüber zu sehen. Warum passiert das? Ich vermute, es ist ein Fehler. Ist es oder gibt es einen triftigen Grund?

War es hilfreich?

Lösung

Leerzeichen am Ende angegeben ist in besonderer Weise in den ANSI SQL-Standards behandelt werden:

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

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

Ich bin nicht sicher, dass eine Binärsortierung dies lösen:

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

Dieses druckt "Equal"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top