PostgreSQL trim()

Sekcia o programovaní, programovacích jazykoch...
Užívateľov profilový obrázok
molnart
Pokročilý používateľ
Pokročilý používateľ
Príspevky: 4706
Dátum registrácie: Ut 19. Jún, 2012, 23:03
Bydlisko: Bratislava/Samorin

PostgreSQL trim()

Príspevok od užívateľa molnart » Ut 14. Júl, 2020, 08:51

Mam databazu s nazvami ulic, kde niektore ulice su vedene v style "Hlavna ulica". Chcem spravit select ktory by mi z toho dal len "Hlavna". Narazil som ale na problem:

prikaz SELECT TRIM('ulica' FROM 'Na vyhni')

mi dava vysledok 'Na vyhn'

rovnako SELECT TRIM('ulica' FROM 'Rudnianska') ma vysledok 'Rudniansk'

mate nejaky napad preco sa to deje?

akoze som to vyriesil takto, ale podla mna aj to povodne by malo fungovat

Kód: Vybrať všetko

CASE WHEN cp.street LIKE '%ulica%'
    THEN TRIM(' ulica ' from cp.street) 
    ELSE cp.street  
END
Spoiler: ukázať
CPU: Intel Core i5 3570K with Gelid Tranquillo rev.2 MB: Asus P8Z77-M Pro RAM: 2x 4GB Corsair 1600 Mhz DDR3 GPU: Sapphire Pulse Radeon RX580 8 GB HDD: Samsung EVO850 500GB, Western Digital WD7501AALS 750GB; Seagate Barracuda Green 2000DL003 2TB PSU: Seasonic S12-II 520W Bronze Case: Fractal Arc Mini Monitor: Dell U2711 OS: Win 10 64-bit + ArchLinux 64-bit with KDE/Cinnamon
HP EliteBook 840 G6
HP Microserver Gen8 PVE + OMV + OPNsense

faugusztin
Moderátor
Moderátor
Príspevky: 15703
Dátum registrácie: Ut 26. Feb, 2008, 14:00
Bydlisko: Bratislava/Štúrovo

Re: PostgreSQL trim()

Príspevok od užívateľa faugusztin » Ut 14. Júl, 2020, 10:15

Pretoze trim odstranuje znaky zo zaciatku/konca/oboch koncov podla zoznamu z prveho parametra. Ty si dal zoznam 'ulica', TRIM funkcia teda hlada znaky u, l, i, c alebo a na zaciatku a konci retazca. Kedze jedine znaky na zaciatku a konci retazca su i (Na vyhni) a a (Rudnianska), tak ich odstrani.

Namiesto kontroly a pouzitia na tento ucel nevhodnej funkcie TRIM by si mal pouzival funkciu REPLACE a odstranit vsetky neziadane kombinacie.

Teda SELECT REPLACE(cp.street,' ulica', '') ...

Užívateľov profilový obrázok
molnart
Pokročilý používateľ
Pokročilý používateľ
Príspevky: 4706
Dátum registrácie: Ut 19. Jún, 2012, 23:03
Bydlisko: Bratislava/Samorin

Re: PostgreSQL trim()

Príspevok od užívateľa molnart » Ut 14. Júl, 2020, 11:19

super, diky
Spoiler: ukázať
CPU: Intel Core i5 3570K with Gelid Tranquillo rev.2 MB: Asus P8Z77-M Pro RAM: 2x 4GB Corsair 1600 Mhz DDR3 GPU: Sapphire Pulse Radeon RX580 8 GB HDD: Samsung EVO850 500GB, Western Digital WD7501AALS 750GB; Seagate Barracuda Green 2000DL003 2TB PSU: Seasonic S12-II 520W Bronze Case: Fractal Arc Mini Monitor: Dell U2711 OS: Win 10 64-bit + ArchLinux 64-bit with KDE/Cinnamon
HP EliteBook 840 G6
HP Microserver Gen8 PVE + OMV + OPNsense

Napísať odpoveď

Návrat na "Programovanie"