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

时间:2013-09-18 17:17:21

标签: replace sql-update oracle9i substr

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

A,B,C,

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

UPDATE table SET column = REPLACE(SUBSTR(column, -1, 1), ',', '');

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分: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) = ',';

这将确保您仅在值以“,”

结尾的行中进行替换

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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