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), ‘ ‘ ) .