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

Replace Oracle-更新字符串以仅替换最后一个字符,replace,sql-update,oracle9i,substr,Replace,Sql Update,Oracle9i,Substr,我在Oracle 9i数据库中有以下字符串: A、 B,C, 当“,”是字符串中的最后一项时,我需要替换它的所有实例。我提出了以下语句,但它删除了字段中的所有内容,而不仅仅是逗号。有什么建议吗 UPDATE table SET column = REPLACE(SUBSTR(column, -1, 1), ',', ''); 您忘记添加条件:其中SUBSTR(列,-1,1)=', Quassnoi发现另一个问题-REPLACE返回null-您不能在“集合”中使用它 完整sql: UPDATE

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

A、 B,C,

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

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

您忘记添加条件:
其中SUBSTR(列,-1,1)=',

Quassnoi发现另一个问题-REPLACE返回null-您不能在“集合”中使用它

完整sql:

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

这将确保您只在值以“,”结尾的行中进行替换。如果您只想在查询中引用“列”一次,只需执行以下操作:


updatetable SET column=REVERSE(SUBSTR(REVERSE(column),2))

rtrim(列“,”)
既高效又短得多

谢谢!注释
updatemytable SET column=SUBSTR(column,1,LENGTH(column)-1),其中SUBSTR(column,-1,1)=',
对我有效。其他人仍然将整行而不是最后一行“,”。你得到的是空值,因为函数
REPLACE
返回空值-检查我的更新答案非常感谢!如果我试图删除字符串的第一个字符“,”,类似的函数会起作用吗?(,A,B,C)@RahulTripathi“谢谢”不是给你的-我抓住了“where”的问题,我抓住了“replace”的问题(你看到后改变了答案!)。请不要把不属于你的功劳据为己有!这实际上更“容易”,因为您可以这样做:
updatetablesetcolumn=SUBSTR(column,2),其中SUBSTR(column,1,1)='
或者可能是“%”、“
这样的列。我认为这个答案看起来更像是一个注释,而不是答案。@AlikElzin kilaka,你是否更在意答案的简洁性或实用性?两人都很优秀,伊姆霍。)
UPDATE  mytable
SET     column = SUBSTR(column, 1, LENGTH(column) - 1)
WHERE   SUBSTR(column, -1, 1) = ','