RTRIM шаблон, а не все символы - PullRequest
0 голосов
/ 11 июня 2018

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

JAPANNO
CHINANO
BROOKLYNNO

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

rtrim (строка, 'НЕТ')

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

BROOKLY.

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

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

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

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

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

DBFiddle Demo

0 голосов
/ 11 июня 2018

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

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

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

0 голосов
/ 11 июня 2018

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

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