webForumDet fria alternativet

Varför trimmas efterföljande mellanslag i variabeln?

Databaser & SQLur Databashanterare & SQL

3 svar · 469 visningar · startad av Lukaspojken

Medlem sedan maj 20011 312 inlägg
Frågan#1

Jag hittade en skum sak och det var att om man tex skriver så här så får man en träff. Men variabel @a är inte detsamma som variabel @b. Är det en bug?

declare  @a AS varchar(5)
declare  @b AS varchar(5)

set  @a = ' 1';
set  @b = ' 1 ';

Select len(@a), len(@b) 
	where @a = @b

Längden på variabeln @b är också 2 tecken vilket är konstigt. Det måste innebära att SQL server trimmar efterföljande mellanslag. Ska det vara så?

Medlem sedan dec. 200012 464 inlägg
#2

Avslutande blanka ignoreras vid jämförelse (om man har ett karaktärssätt med attributet PAD). Så det är inte fel.

Len är ingen standardfunktion så man kan inte säga att SQL server gör fel när dom tar bort avslutande blanka i det fallet. I den motsvarande standardfunktionen, char_length, så är avslutande blanka signifikanta.

Medlem sedan maj 20011 312 inlägg
#3

Ok, men hur får man sql-satsen att fungera korrekt?

Medlem sedan dec. 200012 464 inlägg
#4

Vad menar du med korrekt?

130 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)