RTRIM шаблон, а не все символы

У меня есть такие строки:

JAPANNO
CHINANO
BROOKLYNNO

Я хочу удалить "НЕТ" из всех строк. Я попробовал это:

тртрим (строка "НЕТ")

но например в случае с BROOKLYNNO я получил это:

Brookly.

Удаляет все Ns с конца. Как я могу удалить только шаблон "НЕТ"? Я знаю, что могу сделать это с помощью substr, но TechOnTheNet говорит, что есть способ удалить шаблон с помощью RTRIM, и я действительно хочу узнать, как это сделать.

Заранее спасибо!

3 ответа

Решение

Мы можем рассмотреть возможность замены регулярных выражений через REGEXP_REPLACE, если вы даете контекст, когда NO должны быть удалены и когда это не должно быть. Например, если вы хотите удалить NO только с концов ваших строк мы могли бы сделать следующее:

UPDATE yourTable
SET col = REGEXP_REPLACE(col, 'no$', '', 1, 0, 'i');

Взгляните на это, может быть?

declare @string varchar(150) = 'BROOKLYNNO'
select LEN(@string)
select LEFT(@string,(LEN(@string)-2))

Затем вы можете обновить свой столбец с помощью выходных данных последнего оператора выбора, который обрезает последние две буквы строки.

Я полагаю, возможно, стоит спросить, как вы получаете данные, которые у вас есть здесь, строки с добавлением "НЕТ"?

Вы могли бы использовать TRIM(TRAILING ... FROM):

SELECT col_name,
 REPLACE(TRIM(TRAILING '^' FROM REPLACE(col_name, 'NO', '^')), '^', 'NO') AS res
FROM tab;

DBFiddle Demo

Другие вопросы по тегам