我在 Oracle 9i 数据库中有以下字符串:
A、B、C、
当“,”是字符串中的最后一项时,我需要替换它的所有实例。我提出了以下语句,但它删除了该字段中的所有内容,而不仅仅是逗号。有什么建议吗?
UPDATE table SET column = REPLACE(SUBSTR(column, -1, 1), ',', '');
rtrim(column, ',')
既高效又短
您忘记添加条件:
WHERE SUBSTR(column, -1, 1) = ','
完整的sql:
UPDATE table SET column = SUBSTR(column, 0, length(column)-1)
WHERE SUBSTR(column, -1, 1) = ',';
这将确保您仅在值以“,”结尾的行中进行替换
UPDATE mytable
SET column = SUBSTR(column, 1, LENGTH(column) - 1)
WHERE SUBSTR(column, -1, 1) = ','
如果您只想在查询中引用“列”1 次,只需执行以下操作:
UPDATE table SET column = REVERSE(SUBSTR(REVERSE(column), 2));
要更改字符串中特定位置的单个字符实例,可以使用类似“IM0B010011”的代码。我会使用这段代码:
选择 substr('IM0B010011',1,length('IM0B010011')-1) || (substr('IM0B010011',-1)+1) 来自对偶;
结果: 'IM0B010012'