如何使用 Oracle 替换列中大文本的特定单词
How to replace specific word on a large text in a column using 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 +
应该是(将 ords = 20 替换为 Alpha = 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 +
我尝试了以下方法:
更新 table set desc = REPLACE('words = 20', 'words', 'Alpha') where ;
结果为:
Alpha = 20 而不是整行。
但是,我怎样才能让文本的其余部分只更改“words = 20”,但仍然保留测试的其余部分?
您的陈述:
update table set desc = REPLACE('words = 20', 'words', 'Alpha') where ...;
正在替换 固定字符串 'words = 20` 中的 'words';它根本不作用于您现有的列值。
你可以这样做:
update table set desc = REPLACE(desc, 'words = 20', 'Alpha = 20') where ...;
db<>fiddle(使用有效的 table 和列名称)。
如果要替换 所有 次出现的 'words',而不仅仅是 'words = 20',则从两个参数中删除 = 20
;但从你的尝试来看,我认为你希望它更有针对性。
您需要对原始字符串执行 replace
,而不是对 `'words = 20':
UPDATE mytable
SET desc = REPLACE(desc, 'words', 'Alpha')
旁注:
我猜这些不是您 table 中的真实姓名,但 desc
是 SQL 中的保留字。如果它确实是列的名称,则需要用双引号将其转义(即 "desc"
)。
我想替换特定列中的值。 例如以下列值
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 +
应该是(将 ords = 20 替换为 Alpha = 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 +
我尝试了以下方法:
更新 table set desc = REPLACE('words = 20', 'words', 'Alpha') where ;
结果为:
Alpha = 20 而不是整行。 但是,我怎样才能让文本的其余部分只更改“words = 20”,但仍然保留测试的其余部分?
您的陈述:
update table set desc = REPLACE('words = 20', 'words', 'Alpha') where ...;
正在替换 固定字符串 'words = 20` 中的 'words';它根本不作用于您现有的列值。
你可以这样做:
update table set desc = REPLACE(desc, 'words = 20', 'Alpha = 20') where ...;
db<>fiddle(使用有效的 table 和列名称)。
如果要替换 所有 次出现的 'words',而不仅仅是 'words = 20',则从两个参数中删除 = 20
;但从你的尝试来看,我认为你希望它更有针对性。
您需要对原始字符串执行 replace
,而不是对 `'words = 20':
UPDATE mytable
SET desc = REPLACE(desc, 'words', 'Alpha')
旁注:
我猜这些不是您 table 中的真实姓名,但 desc
是 SQL 中的保留字。如果它确实是列的名称,则需要用双引号将其转义(即 "desc"
)。