我正在使用oracle,toad。
我想用退格键替换。
列包含:bla bla foo ,CALL HELPDESK
必须替换:bla bla foo CALL HELPDESK
基本上应该删除
我试过这样:
UPDATE Mytable t
SET column = REPLACE(t.U_MSG, ''%, CALL HELPDESK'', '% CALL HELPDESK')
答案 0 :(得分:9)
REPLACE
不使用通配符,它只是用第二个字符串替换第一个字符串的所有实例。这应该有效:
UPDATE Mytable t
SET column = REPLACE(t.U_MSG, ', CALL HELPDESK', ' CALL HELPDESK')
答案 1 :(得分:2)
考虑不来替换所有逗号..
UPDATE Mytable t
SET column = REGEXP_REPLACE(t.U_MSG,',( )*(CALL HELPDESK)','CALL HELPDESK')
其他,简单
UPDATE Mytable t
SET column = REGEXP_REPLACE(t.U_MSG,',( )*')
注意,它也会删除逗号后面的所有空格。
答案 2 :(得分:2)
由于替换的字符串已修复,为什么不简单地使用它:
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