Problem:
Du vill ta bort en radbrytning i en kolumn.
Exempel:
Vår databas har en tabell som heter address_book
med data i kolumnerna city_name
och company_address
. Du vill byta ut var och en av flikarna och radbrytningarna i company_address
kolumn med ' ' (ett mellanslag) för att göra det mer visuellt tilltalande.
stadsnamn | företagsadress |
---|---|
Tokyo | 15th Oreo Street, Tokyo 9870-11 |
Warszawa | 18 Marszalkowska Ave, Warszawa 03-654 |
Accra | 123 Banana Junction, Circle-Accra, 00244 |
Berlin | 25th Mango Avenue, Asyl Down, DE-1234 |
Lösning:
Här är frågan:
SELECT city_name, REPLACE(company_address, CHR(10) || CHR(13) || CHR(9), ‘ ‘) FROM address_book;
Här är resultatet av frågan:
stadsnamn | företagsadress |
---|---|
Tokyo | 15th Oreo Street, Tokyo 9870-11 |
Warszawa | 18 Marszalkowska Ave, Warszawa 03-654 |
Accra | 123 Banana Junction, Circle-Accra, 00244 |
Berlin | 25th Mango Avenue, Asylum Down, DE-1234 |
Diskussion:
REPLACE()
funktion används vanligtvis för att ersätta alla förekomster av en specificerad sträng i en sträng med en annan sträng. Du kan fråga varför vi använde CHR(10)
och CHR(13)
i exemplet ovan. CHR()
funktionen används för att infoga kontrolltecken i en sträng. CHR(10)
används för att infoga radbrytningar, CHR(9)
är för flikar och CHR(13)
är för fraktretur.
I exemplet ovan ville vi ta bort alla förekomster av radbrytningen, tabben och vagnretur, så vi använde CHR(10)
, CHR(9)
och CHR(13)
. De kan kombineras med konkateneringstecknet i Oracle (||
) för att ta bort alla deras förekomster i en kolumn. Ett exempel på syntax är REPLACE(string, CHR(10) || (CHR(13) || CHR(09), ‘ ‘ )
.