Question

Celui-ci m'a l'autre jour. Que penseriez-vous ce qui suit pour revenir?

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

Remarquez l'espace dans la deuxième SELECT. Eh bien, apparemment SQL 2000 et 2005 à la fois retour 1 résultat. Même si son UNION une (et non un UNION ALL).

Il n'y a rien que je peux voir dans Livres en ligne à ce sujet. Pourquoi est-il arrivé? Je devine que c'est un bug. Est-il ou est-il une raison valable?

Était-ce utile?

La solution

espace de fin est spécifié pour être manipulé d'une manière spéciale dans la norme ANSI SQL standard:

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

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

Je ne suis pas sûr qu'un classement binaire résoudra ceci:

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

Cette affiche "Equal"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top