5

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

A,B,C,

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

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

4 回答 4

8

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

于 2015-01-14T12:48:07.197 回答
3

您忘记添加条件:WHERE SUBSTR(column, -1, 1) = ','
Quassnoi 发现了另一个问题 - REPLACE 返回 null - 您不能在“集合”中使用它

完整的sql:

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

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

于 2013-09-18T17:20:40.857 回答
1

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

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

于 2014-12-17T08:50:01.070 回答
1
UPDATE  mytable
SET     column = SUBSTR(column, 1, LENGTH(column) - 1)
WHERE   SUBSTR(column, -1, 1) = ','
于 2013-09-18T17:21:22.417 回答