Tema: Re: MSSQL - Dinaminis string'o ilgis?
Autorius: Jornada Del Muerto
Data: 2009-06-30 09:59:52
+
Teke susidurti kai viens studentelis sukures buvo DB su butent MSSQL char
laukais, veliau grimzdo to pasekoje i dar didesne beda, ieskodamas
informacijos ja pries tai apdirbdamas su System.String Trim funkcija:) to
pasekoje trindamas ne tik nuo galo tarpus bet ir zodzio viduryje :)
Ir tai nekalbant kad informacija buvo jei gerai pamenu unicodine ir vedama
is web, kur blogiausiu jam atveju naudoti reikia nchar, o geriausiu
nvarchar - kuris skirtas unicodiniam tekstui laikyt, toki veikejai neretai
po to pamirsta RTRIM panaudot ir gaunasi daug bugu, kruva nereikalingo kodo
su tarpu is desines valymu po to..
Jeigu programuotojas panaudoja CHAR tipa tai visada man norisi paklaust, kad
pagrystu tai bent viena realia priezastimi kam jam to reikia... man toks
itarimas kad cia eina nuo kokio FOXPRO ir lievu ziniu is univero... kur
desto greiciausia destytuvai mokinesi dar tais laikais kai buvo tik char ir
visokios space delimited databases...
"Laimis" <wiela@centras.lt> wrote in message
news:h20oj6$cf6$1@trimpas.omnitel.net...
> bala nemate rašė:
>>
>> rezultate gaunu, kad @DBName yra 'master ', o
>> ne 'master'
>>
>> o gal iš principo ne tuo keliu einu...
>
> Tikrai ne tuo... ;-)
> Tai vadinama (ansi) blank/space padding (standartas), ir norint išvengti
> aibės potencialių siurprizų, būtų labai naudinga atsiminti, kad fiksuoto
> ilgio tekstiniai laukai (char ir kt.), bendru atveju (jei neįjungta kokia
> nors legacy, suderinamumo opcija)
> yra būtent tokie -- fiksuoto ilgio ir „space padded“.
> Kita vertus, tai negalioja kintamo ilgio laukams (varchar ir kt.).
> O siurprizai gali būti labai netikėti ir bjaurūs:
>
> INSERT INTO ... 'foo'
>
> ir
>
> SELECT .. WHERE bar = 'foo'
>
> <nieko>, nes
>
>
> 'foo' <> 'foo '