![](/img/trans.png)
[英]How to remove part of string in a column based on content of another column in Oracle
[英]How to replace part of string in a column, in oracle
我正在使用 oracle,蟾蜍。
我想用退格键替换。
列包括: bla bla foo,CALL HELPDESK
它必须替换: bla bla foo CALL HELPDESK
基本上应该去掉
我试过这样的:
UPDATE Mytable t
SET column = REPLACE(t.U_MSG, ''%, CALL HELPDESK'', '% CALL HELPDESK')
REPLACE
不使用通配符,它只是用第二个字符串替换第一个字符串的所有实例。 这应该工作:
UPDATE Mytable t
SET column = REPLACE(t.U_MSG, ', CALL HELPDESK', ' CALL HELPDESK')
考虑不要替换所有逗号..
UPDATE Mytable t
SET column = REGEXP_REPLACE(t.U_MSG,',( )*(CALL HELPDESK)','CALL HELPDESK')
否则,简单
UPDATE Mytable t
SET column = REGEXP_REPLACE(t.U_MSG,',( )*')
注意,它也删除逗号后的所有空格。
由于替换的字符串是固定的,为什么不简单地使用:
UPDATE Mytable t
SET column = SUBSTR(t.U_MSG, 1, LENGTH(t.U_MSG)-15)
-- ^^
-- length of the replaced string
-- hard coded in this example, should
-- probably use `LENGTH(...)` for ease
-- of maintenance in production code
这可能不如其他解决方案那么聪明,但是即使命运的意外扭曲,在一些字符串中多次出现被替换的字符串,这也会有效:
WITH t AS (
SELECT 'PLEASE, CALL HELPDESK' U_MSG FROM DUAL
UNION ALL SELECT 'CALL HELPDESK, CALL HELPDESK! THEY SAID, CALL HELPDESK' FROM DUAL
)
SELECT SUBSTR(t.U_MSG, 1, LENGTH(t.U_MSG)-15) || ' CALL HELP DESK' MSG FROM t;
生产:
MSG
------------------------------------------------------
PLEASE CALL HELP DESK
CALL HELPDESK, CALL HELPDESK! THEY SAID CALL HELP DESK
更新我的表 t
设置 t.U_MSG = replace(t.U_MSG, ......见上面的答案......)
因为原帖里有列名,放在set后面。 如果您使用 COLUMN 一词,它将出错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.