PostgreSQL trim()

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

PostgreSQL trim()

Príspevok od používateľa molnart »

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ť
PC: CPU: Intel Core i5 12600K with Silentium Fortis 5 ARGB MB: MSI Tomahawk Z690 DDR4 RAM: 2x 16GB G.Skill Ripjaws V 4400-19 DDR4 GPU: GigaByte Eagle GeForce RTX 3060 Ti OC HDD: Samsung 970 1GB GB PSU: Corsair RMx (2018) 650W Case: Fractal Meshify 2 Compact Monitor: Philips 272B7QPJEB OS: Win 11 64-bit
Notebook: HP EliteBook 840 G6 Core i5 8265U, 16 GB RAM, 512 GB SSD
Server: HP Microserver Gen8 Xeon E3-1265Lv2, 16GB ECC DDR3 OS: PVE + OMV + OPNsense
Phone: Samsung Galaxy A52s
Tablet: iPad Pro 11 (2018)
faugusztin
Moderátor
Moderátor
Príspevky: 15047
Dátum registrácie: Ut 26. Feb, 2008, 14:00
Bydlisko: Bratislava/Štúrovo

Re: PostgreSQL trim()

Príspevok od používateľa faugusztin »

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', '') ...
Používateľov profilový obrázok
molnart
Pokročilý používateľ
Pokročilý používateľ
Príspevky: 6663
Dátum registrácie: Ut 19. Jún, 2012, 23:03
Bydlisko: Bratislava/Samorin

Re: PostgreSQL trim()

Príspevok od používateľa molnart »

super, diky
Spoiler: ukázať
PC: CPU: Intel Core i5 12600K with Silentium Fortis 5 ARGB MB: MSI Tomahawk Z690 DDR4 RAM: 2x 16GB G.Skill Ripjaws V 4400-19 DDR4 GPU: GigaByte Eagle GeForce RTX 3060 Ti OC HDD: Samsung 970 1GB GB PSU: Corsair RMx (2018) 650W Case: Fractal Meshify 2 Compact Monitor: Philips 272B7QPJEB OS: Win 11 64-bit
Notebook: HP EliteBook 840 G6 Core i5 8265U, 16 GB RAM, 512 GB SSD
Server: HP Microserver Gen8 Xeon E3-1265Lv2, 16GB ECC DDR3 OS: PVE + OMV + OPNsense
Phone: Samsung Galaxy A52s
Tablet: iPad Pro 11 (2018)

Návrat na "Programovanie"