首页 > 解决方案 > 如何使用Oracle替换列中大文本上的特定单词

问题描述

我正在寻找替换特定列中的值。例如以下列值

desc
----------
Test1 words = 30 have so much words = 20 over 60 words +
Test2 words = 30 have so much words = 20 over 60 words +
Test3 words = 30 have so much words = 20 over 60 words +
Test4 words = 30 have so much words = 20 over 60 words +

应该是(用 Alpha = 20 替换 ords = 20)

结果:

desc
----------
Test1 words = 30 have so much Alpha = 20 over 60 words +
Test2 words = 30 have so much Alpha = 20 over 60 words +
Test3 words = 30 have so much Alpha = 20 over 60 words +
Test4 words = 30 have so much Alpha = 20 over 60 words +

我尝试了以下方法:

更新表集 desc = REPLACE('words = 20', 'words', 'Alpha') where ;

这导致:

Alpha = 20 而不是整行。但是,我怎样才能保留其余的文本只是更改“words = 20”但仍保留其余的测试?

标签: sqloracle11gsql-update

解决方案


您需要replace在原始字符串上执行,而不是在 ''words = 20' 上执行:

UPDATE mytable
SET    desc = REPLACE(desc, 'words', 'Alpha')

旁注:
我猜这些不是您表中的真实名称,而是descSQL 中的保留字。如果它确实是列名,则需要用双引号(即,"desc")对其进行转义。


推荐阅读