我在oracle中有一个带有逗号分隔值的列的表。我需要的是当用户输入一个值并且该值存在于任何行中时,应将其删除
例如
123234
56,123
如果用户输入123,则第1列应该只有234,第二列应该只有56
我们如何在oracle中做到这一点?
请帮助
感谢
答案 0 :(得分:3)
delete from yourtable t
where
instr(','||t.col||',', '123') > 0
如果您愿意,可以用参数替换'123'。
但更好的方法是不存储逗号分隔值,而是创建详细信息表。如果您需要在逗号分隔列表中查找特定值,则不能使用索引以及其他限制。
[编辑] 误解了这个问题。你的意思是:
update YourTable t
set
t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
instr(','||t.col||',', '123') > 0
答案 1 :(得分:1)
试试这个:
UPDATE t
SET col = REPLACE(REPLACE(col, '&variable', ''), ',', '') FROM t ;