Problem:
Chcesz usunąć podział wiersza w kolumnie.
Przykład:
Nasza baza danych zawiera tabelę o nazwie address_book
z danymi w kolumnach city_name
i company_address
. Chcesz zastąpić każdą z kart i podziałów wierszy w company_address
kolumna z ‘ ‘ (spacją), aby była bardziej atrakcyjna wizualnie.
nazwa_miasta | adres_firmy |
---|---|
Tokio | 15. ulica Oreo, Tokio 9870-11 |
Warszawa | al. Marszałkowska 18, Warszawa 03-654 |
Akra | 123 Węzeł Bananowy, Circle-Akra, 00244 |
Berlin | 25. Aleja Mango, Azyl w dół, DE-1234 |
Rozwiązanie:
Oto zapytanie:
SELECT city_name, REPLACE(company_address, CHR(10) || CHR(13) || CHR(9), ‘ ‘) FROM address_book;
Oto wynik zapytania:
nazwa_miasta | adres_firmy |
---|---|
Tokio | 15th Oreo Street, Tokio 9870-11 |
Warszawa | Al.Marszałkowska 18, Warszawa 03-654 |
Akra | 123 Węzeł Bananowy, Koło-Akra, 00244 |
Berlin | 25th Mango Avenue, Asylum Down, DE-1234 |
Dyskusja:
REPLACE()
Funkcja jest zwykle używana do zastępowania wszystkich wystąpień określonego ciągu w ciągu innym ciągiem. Możesz zapytać, dlaczego użyliśmy CHR(10)
i CHR(13)
w powyższym przykładzie. CHR()
Funkcja służy do wstawiania znaków sterujących do ciągu. CHR(10)
służy do wstawiania łamania linii, CHR(9)
jest dla kart, a CHR(13)
dotyczy powrotu karetki.
W powyższym przykładzie chcieliśmy usunąć wszystkie wystąpienia łamania wiersza, tabulatora i powrotu karetki, więc użyliśmy CHR(10)
, CHR(9)
i CHR(13)
. Można je łączyć za pomocą znaku konkatenacji w Oracle (||
) do usuwania wszystkich ich wystąpień w kolumnie. Przykładową składnią jest REPLACE(string, CHR(10) || (CHR(13) || CHR(09), ‘ ‘ )
.