2014-07-19 3 views
0

Quelque chose qui m'a complètement choqué, et m'a fait sentir comme un imbécile absolu.ZLS vs 1 espace char

select count(*) as [row count], myField as FieldValue, len(myField) as ValueLength 
from myTable 
where myField=N'' 
group by myField,len(myField) 

Renvoie un record avec un comte en bonne santé, et [ValueLength] de 0.

Maintenant, si je change la clause WHERE pour: where myField=N' ' (ie changement d'un ZLS à un {espace})

La requête renvoie maintenant exactement le même résultat?

Comment cela peut-il être? SQL Server sait certainement la différence entre un ZSL et un espace? Mai c'est moi qui ne comprend pas!?

S'il vous plaît quelqu'un peut m'éclairer sur ce qui se passe sous le capot ici?

Merci beaucoup

Répondre

1

Ceci est dû à un rembourrage pour comparer des chaînes de même longueur: http://support.microsoft.com/kb/316626

+0

Une note complémentaire; le comportement est (afaik) limité à SQL Server et n'est pas un comportement SQL standard. –