whitespace UNION Bug
-
19-09-2019 - |
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?
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