Problém:
Chcete odstranit konec řádku ve sloupci.
Příklad:
Naše databáze obsahuje tabulku s názvem address_book
s údaji ve sloupcích city_name
a company_address
. Chtěli byste nahradit každou z karet a zalomení řádků v company_address
sloupec s „ “ (mezera), aby byl vizuálně přitažlivější.
city_name | adresa_společnosti |
---|---|
Tokio | 15th Oreo Street, Tokio 9870-11 |
Varšava | 18 Marszalkowska Ave, Varšava 03-654 |
Accra | 123 Banana Junction, Circle-Accra, 00244 |
Berlín | 25th Mango Avenue, Asylum Down, DE-1234 |
Řešení:
Zde je dotaz:
SELECT city_name, REPLACE(company_address, CHR(10) || CHR(13) || CHR(9), ‘ ‘) FROM address_book;
Zde je výsledek dotazu:
city_name | adresa_společnosti |
---|---|
Tokio | 15th Oreo Street, Tokio 9870-11 |
Varšava | 18 Marszalkowska Ave, Varšava 03-654 |
Accra | 123 Banana Junction, Circle-Accra, 00244 |
Berlín | 25th Mango Avenue, Asylum Down, DE-1234 |
Diskuse:
REPLACE()
Funkce se obecně používá k nahrazení všech výskytů zadaného řetězce v řetězci jiným řetězcem. Můžete se zeptat, proč jsme použili CHR(10)
a CHR(13)
ve výše uvedeném příkladu. CHR()
funkce se používá k vložení řídicích znaků do řetězce. CHR(10)
se používá pro vkládání zalomení řádků, CHR(9)
je pro karty a CHR(13)
je pro vrácení vozíku.
Ve výše uvedeném příkladu jsme chtěli odstranit všechny výskyty konce řádku, tabulátoru a konce řádku, takže jsme použili CHR(10)
, CHR(9)
a CHR(13)
. Lze je kombinovat pomocí znaku zřetězení v Oracle (||
) pro odstranění všech jejich výskytů ve sloupci. Příklad syntaxe je REPLACE(string, CHR(10) || (CHR(13) || CHR(09), ‘ ‘ )
.