Проблем:
Искате да премахнете прекъсване на ред в колона.
Пример:
Нашата база данни има таблица с име address_book
с данни в колоните city_name
и company_address
. Искате да замените всеки от разделите и прекъсванията на редовете в company_address
колона с „ “ (интервал), за да стане по-привлекателна визуално.
име_на_град | адрес_на компания |
---|---|
Токио | 15-та улица Орео, Токио 9870-11 |
Варшава | Маршалковска 18, Варшава 03-654 |
Акра | 123 Banana Junction, Кръг-Акра, 00244 |
Берлин | 25-то Манго авеню, Asylum Down, DE-1234 |
Решение:
Ето заявката:
SELECT city_name, REPLACE(company_address, CHR(10) || CHR(13) || CHR(9), ‘ ‘) FROM address_book;
Ето резултата от заявката:
име_на_град | адрес_на компания |
---|---|
Токио | 15th Oreo Street, Токио 9870-11 |
Варшава | 18 Marszalkowska Ave, Варшава 03-654 |
Акра | 123 Banana Junction, Circle-Accra, 00244 |
Берлин | 25th Mango Avenue, Asylum Down, DE-1234 |
Дискусия:
REPLACE()
функцията обикновено се използва за замяна на всички поява на определен низ в низ с друг низ. Може да попитате защо използвахме CHR(10)
и CHR(13)
в примера по-горе. CHR()
функцията се използва за вмъкване на контролни знаци в низ. CHR(10)
се използва за вмъкване на прекъсвания на редове, CHR(9)
е за раздели и CHR(13)
е за връщане на превоз.
В примера по-горе искахме да премахнем всички случаи на прекъсване на реда, на раздела и на връщане на карета, така че използвахме CHR(10)
, CHR(9)
и CHR(13)
. Те могат да бъдат комбинирани с помощта на знака за конкатенация в Oracle (||
) за премахване на всичките им поява в колона. Примерен синтаксис е REPLACE(string, CHR(10) || (CHR(13) || CHR(09), ‘ ‘ )
.