Oracle - 更新字符串以仅替换最后一个字符

问题描述 投票:0回答:5

我在 Oracle 9i 数据库中有以下字符串:

A、B、C、

当“,”是字符串中的最后一项时,我需要替换它的所有实例。我提出了以下语句,但它删除了该字段中的所有内容,而不仅仅是逗号。有什么建议吗?

UPDATE table SET column = REPLACE(SUBSTR(column, -1, 1), ',', '');
replace sql-update oracle9i substr
5个回答
9
投票

rtrim(column, ',')
既高效又短


3
投票

您忘记添加条件:

WHERE SUBSTR(column, -1, 1) = ','

Quassnoi 发现了另一个问题 - REPLACE 返回 null - 你不能在“set”中使用它

完整的sql:

UPDATE table SET column = SUBSTR(column, 0, length(column)-1) 
WHERE SUBSTR(column, -1, 1) = ',';

这将确保您仅在值以“,”结尾的行中进行替换


1
投票
UPDATE  mytable
SET     column = SUBSTR(column, 1, LENGTH(column) - 1)
WHERE   SUBSTR(column, -1, 1) = ','

1
投票

如果您只想在查询中引用“列”1 次,只需执行以下操作:

UPDATE table SET column = REVERSE(SUBSTR(REVERSE(column), 2));


0
投票

要更改字符串中特定位置的单个字符实例,可以使用类似“IM0B010011”的代码。我会使用这段代码:

选择 substr('IM0B010011',1,length('IM0B010011')-1) || (substr('IM0B010011',-1)+1) 来自对偶;

结果: 'IM0B010012'

© www.soinside.com 2019 - 2024. All rights reserved.