Problem:
Du vil gerne fjerne et linjeskift i en kolonne.
Eksempel:
Vores database har en tabel med navnet address_book
med data i kolonnerne city_name
og company_address
. Du vil gerne erstatte hver af fanerne og linjeskiftene i company_address
kolonne med ' ' (et mellemrum) for at gøre det mere visuelt tiltalende.
bynavn | virksomhedsadresse |
---|---|
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 ned, DE-1234 |
Løsning:
Her er forespørgslen:
SELECT city_name, REPLACE(company_address, CHR(10) || CHR(13) || CHR(9), ‘ ‘) FROM address_book;
Her er resultatet af forespørgslen:
bynavn | virksomhedsadresse |
---|---|
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 bruges generelt til at erstatte alle forekomster af en specificeret streng i en streng med en anden streng. Du kan spørge, hvorfor vi brugte CHR(10)
og CHR(13)
i eksemplet ovenfor. CHR()
funktion bruges til at indsætte kontroltegn i en streng. CHR(10)
bruges til at indsætte linjeskift, CHR(9)
er for faner og CHR(13)
er til fragtretur.
I eksemplet ovenfor ønskede vi at fjerne alle forekomster af linjeskift, faneblad og vognretur, så vi brugte CHR(10)
, CHR(9)
og CHR(13)
. De kan kombineres ved hjælp af sammenkædningstegnet i Oracle (||
) for at fjerne alle deres forekomster i en kolonne. Et eksempel på syntaks er REPLACE(string, CHR(10) || (CHR(13) || CHR(09), ‘ ‘ )
.