MS SQL unicode i funkcja replace()
Leszek Wesołowski - 12-01-2007 00:29
MS SQL unicode i funkcja replace()
Witam
Proszę o pomoc.
Mam w bazie dane. Są one codziennie w nocy aktualizowane z innego systemu.
Dane tekstowe są zapisywane w formacie unicode. Dodatkowo wymagają konwersji z jednej standardu kodowania na inny.
Wszystko by było dobrze gdyby nie ... :)
funkcja replace() zamienia mi wszystko a nawet więcej niż powinna
Powiedzcie mi dlaczego tak się dzieje że po wykonaniu takiej procedurki
DECLARE @nstring nchar(20) SET @nstring = N'ul. Spó³dzielcza 35' print replace(@nstring,N'³',N'ł')
mam w wyniku coś takiego: ul. Spółdzielcza ł5
Zamienia mi dodatkowo '3' na 'ł'
Pozdrawiam Leszek
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Marcin A. Guzowski - 12-01-2007 00:29
Leszek Wesołowski napisał(a): > DECLARE @nstring nchar(20) > SET @nstring = N'ul. Spó³dzielcza 35' > print replace(@nstring,N'³',N'ł') > > mam w wyniku coś takiego: > ul. Spółdzielcza ł5
E tam. W to na pewno nie uwierzę. Zmienna @nstring nie zmieści się w typie nchar(20). Nie ma więc szans, że ten kod wyświetli w ogóle numer ulicy - string zostanie ucięty gdzieś na końcówce nazwy.
Natomiast przy typie danych o odpowiedniej długości u mnie wszystko działa jak trzeba.
Jeżeli nadal chcesz oskarżać REPLACE o niewłaściwe działanie to podaj: - dokładną wersję SQL Servera - COLLATION bazy w kontekście której jest issue i COLLATION servera - dokłady T-SQL, który powoduje błędne działanie -* inne info, które uznasz za stosowne
-- Pozdrawiam, Marcin Guzowski http://guzowski.info
Leszek - 13-01-2007 00:01
> Leszek Wesołowski napisał(a): > > DECLARE @nstring nchar(20) > > SET @nstring = N'ul. Spó³dzielcza 35' > > print replace(@nstring,N'³',N'ł') > > > > mam w wyniku coś takiego: > > ul. Spółdzielcza ł5 > > > E tam. W to na pewno nie uwierzę. Zmienna @nstring nie zmieści się w > typie nchar(20). Nie ma więc szans, że ten kod wyświetli w ogóle numer > ulicy - string zostanie ucięty gdzieś na końcówce nazwy. > > Natomiast przy typie danych o odpowiedniej długości u mnie wszystko > działa jak trzeba. > > Jeżeli nadal chcesz oskarżać REPLACE o niewłaściwe działanie to podaj: > - dokładną wersję SQL Servera > - COLLATION bazy w kontekście której jest issue i COLLATION servera > - dokłady T-SQL, który powoduje błędne działanie > -* inne info, które uznasz za stosowne > > > -- > Pozdrawiam, > Marcin Guzowski > http://guzowski.info
No cóż ale to naprawde działa a co najlepsze to jest przykład z oficjalnej dokumentacji MS SQL 2000. Opis funkcji UNICODE() i działa ;)))
A co do działania REPLACE do dziękuje pomogło wstawienie COLLATION
Pozdrawiam Leszek Wesołowski
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
=?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?=
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
[oracle] - Oracle SQL Developer - co to jest SID?
=?ISO-8859-2?Q?[Oracle]_Wywo=B3anie_skryptu_sh_z_PL/SQL-a=3F=3F?=
[oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
zanotowane.pldoc.pisz.plpdf.pisz.plczterowers.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|