RTRIM是一种模式,而不是所有的角色

时间:2018-06-11 14:02:40

标签: sql oracle trim character-trimming

我有这样的字符串:

JAPANNO
CHINANO
BROOKLYNNO

我想删除' NO'从所有的字符串。我试过这个:

rtrim(字符串,' NO')

但是例如在BROOKLYNNO的情况下,我得到了这个:

布鲁克林。

它从末尾删除所有N-s。如何删除' NO'?的模式? 我知道我可以用substr来做,但是TechOnTheNet说有一种方法可以删除RTRIM的模式,我真的想知道这种方式。

提前谢谢!

3 个答案:

答案 0 :(得分:1)

我们可以考虑通过REGEXP_REPLACE进行正则表达式替换,如果您给出了应该删除NO的时间以及何时不应该删除的上下文。例如,如果您只想从字符串末尾删除NO,我们可以执行以下操作:

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

答案 1 :(得分:0)

您可以使用TRIM(TRAILING ... FROM)

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

<强> DBFiddle Demo

答案 2 :(得分:0)

看看这个,也许吧?

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

然后,您可以使用最终选择语句的输出更新您的列,该语句会修剪字符串中的最后两个字母。

我想可能值得问一下你如何获得这里的数据,字符串附加“否”?