ďťż
 
[postgre] oczyszczanie stringa do cyfr ďťż
 
[postgre] oczyszczanie stringa do cyfr
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[postgre] oczyszczanie stringa do cyfr



Mariusz Witek - 13-03-2006 11:25
[postgre] oczyszczanie stringa do cyfr
 
mozna oczywiscie na okolo (substring,..) ale moze jest lepszy sposob
typowo 2 przyklady

pole: nip char(15)

"NIP:345-12-54.666" - "zle" napisany nip chce wyrzucic wszystko !=[0-9]
->3451254666
"00=234" - zle napisany kod pocztowy ale generalnie poprawny
->00234

.....
WHERE char_lenght(clear_nip) BETWEEN 9 and 10

na poczatku wpadlem na:
trim(to_char(to_number( nip, '999999999999999'),'999999999999999'))

ale no tak ladnie dziala tylko co bedzie jak zaistnieje nip z "000..." na
poczatku? (niby takich chyba nie ma ale do kodu pocztowego juz nie
zastosuje - inaczej ..mozna to_char( ...,'0999999999999999') (uzupelni
zerami z przodu) ale nie bede wiedzial, ze kod jest calkiem do bani np. dla
"aa-234" lub "712hdzgfd234x54"

jak to zrobic bez procedury lub tasiemca CASE itp. ?





=?iso-8859-1?Q?Andrzej_Str=F3zynski?= - 13-03-2006 11:26

 
Uzytkownik "Mariusz Witek" napisal w wiadomosci
news:duplnm$p9i$1@atlantis.news.tpi.pl...
>
> mozna oczywiscie na okolo (substring,..) ale moze jest lepszy sposob
> typowo 2 przyklady
>
> pole: nip char(15)
>
> "NIP:345-12-54.666" - "zle" napisany nip chce wyrzucic wszystko !=[0-9]
> ->3451254666
> "00=234" - zle napisany kod pocztowy ale generalnie poprawny
> ->00234
>
> ....
> WHERE char_lenght(clear_nip) BETWEEN 9 and 10
>
> na poczatku wpadlem na:
> trim(to_char(to_number( nip, '999999999999999'),'999999999999999'))
>
> ale no tak ladnie dziala tylko co bedzie jak zaistnieje nip z "000..." na
> poczatku? (niby takich chyba nie ma ale do kodu pocztowego juz nie
> zastosuje - inaczej ..mozna to_char( ...,'0999999999999999') (uzupelni
> zerami z przodu) ale nie bede wiedzial, ze kod jest calkiem do bani np.
> dla
> "aa-234" lub "712hdzgfd234x54"
>
> jak to zrobic bez procedury lub tasiemca CASE itp. ?

Tego nie wiem, ale chcialbym zwrócic uwage na fakt, ze jak z NIP-u
wyrzucisz wszystkie nieistotne znaki, to mimo "czystej" formy, ten NIP moze
byc bledny! Jesli chcesz miec pewnosc, ze nip jest prawidlowy to i tak
musisz skorzystac z funkcji, która sprawdzi cyfre kontrolna a przy okazji
usunie wszystkie zbedne (Twoim zdaniem) znaki.

Pozdrawiam
A.S.

PS.
Z tego co pamietam, to nie ma puli NIP-ów zaczynajacej sie od "0".




Robert Grabowski - 13-03-2006 11:26

  Mariusz Witek wrote:
[...]

> jak to zrobic bez procedury lub tasiemca CASE itp. ?
>

test=# select regexp_replace('bbb0=0aaa', '([^0-9])', '', 'g');
regexp_replace
----------------
00
(1 row)

Ale tylko w 8.1 ...

pozdrawiam
Robert Grabowski




max - 13-03-2006 11:26

  Mariusz Witek napisał(a):
> mozna oczywiscie na okolo (substring,..) ale moze jest lepszy sposob
> typowo 2 przyklady
>
> pole: nip char(15)
>
> "NIP:345-12-54.666" - "zle" napisany nip chce wyrzucic wszystko !=[0-9]
> ->3451254666
> "00=234" - zle napisany kod pocztowy ale generalnie poprawny
> ->00234
>
> ....
> WHERE char_lenght(clear_nip) BETWEEN 9 and 10
>
> na poczatku wpadlem na:
> trim(to_char(to_number( nip, '999999999999999'),'999999999999999'))
>
> ale no tak ladnie dziala tylko co bedzie jak zaistnieje nip z "000..." na
> poczatku? (niby takich chyba nie ma ale do kodu pocztowego juz nie
> zastosuje - inaczej ..mozna to_char( ...,'0999999999999999') (uzupelni
> zerami z przodu) ale nie bede wiedzial, ze kod jest calkiem do bani np.dla
> "aa-234" lub "712hdzgfd234x54"
>
> jak to zrobic bez procedury lub tasiemca CASE itp. ?
Jak zrobić CO ?
>
>
>
>
>
A moglbym prosic o wersje "powoli i spokojnie"
bo z chaosu jakos nic sie nie wyłania :)

Co chcesz zrobić ? Sprawdzić wprowadzaną wartość ?
Dlaczego jesteś przeciwnikiem procedur po stronie serwera ?
To daje taki KOSMICZNE możliwości :) nie do zrobienia w czystym SQL i
przejrzystość SQL-a wzrasta. Juz nie wspomne o tym ze po tygodniu nadal
rozumiesz o co Ci chodziło jak coś pisałeś.

AHA! I kodowanie chyba masz zle ustawione :)

Max





Mariusz Witek - 15-03-2006 10:39

  Robert Grabowski wrote:

> Mariusz Witek wrote:
> [...]
>
>> jak to zrobic bez procedury lub tasiemca CASE itp. ?
>>
>
> test=# select regexp_replace('bbb0=0aaa', '([^0-9])', '', 'g');
> regexp_replace
> ----------------
> 00
> (1 row)
>
> Ale tylko w 8.1 ...
>
> pozdrawiam
> Robert Grabowski

dzieki, zamietam na dlugo
p.s. a probowalem! ale zapomialem o reszcie parametrow skupiajac sie na RE i
sypnelo bledem to myslalem ze tak sie nie da tego uzyc
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?= postgresql - int/int postgresql Select count(*) czy raczej Select count(ID) [PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?= [postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?= [PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?= Postgres - replikcja master-master Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL] Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?= =?ISO-8859-2?Q?[psql]_Polskie_t=B3umaczenie_?= =?ISO-8859-2?Q?licencji_BSD_dla_PostgreSQL=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.opx.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com