Как заменить несколько строк в операторе выбора Teradata - PullRequest
1 голос
/ 22 апреля 2019

Мне нужно выбрать из таблицы, но удалить различные строки.Допустим, записи в моей таблице:

DataMart1:Here is some data and other valuable data
HouseWareMart Other data possibly junk data
DataLake3 there is nothing here

И я хочу удалить различные строки: «Ценные данные» «Другие данные» «Нет ничего» * ​​1004 *

Так я получу:

DataMart1:Here is some data and other
HouseWareMart possibly junk data
DataLake3 here

Я думал о вложении OREPLACE, но не смог получить правильный синтаксис, и поиск «Nested OREPLACE» ничего не дал.

Есть предложения?

Ответы [ 2 ]

4 голосов
/ 22 апреля 2019

Синтаксис для вложенной замены:

select oreplace(oreplace(oreplace(col, 'Valuable data', ''), 'Other data ', ''), 'there is nothing ', '')
3 голосов
/ 22 апреля 2019

Внимание: oReplace чувствителен к регистру ('Valuable data' не будет соответствовать 'valuable data') и может найти второе совпадение после удаления первого, например, 'DataLake3 there is valuable data nothing date' сначала удаляет valuable data, а затем there is nothing из оставшейся строки.

Более простой способ удаления нескольких строк использует regexp_replace, с учетом регистра

RegExp_Replace(col, 'valuable data|other data|there is nothing')

или без учета регистра

RegExp_Replace(col, 'valuable data|other data|there is nothing', '', 1, 0, 'i')
...