如何用用户输入值 oracle 替换表列中的逗号分隔值

发布于 2024-11-07 20:40:31 字数 206 浏览 1 评论 0原文


我在 oracle 中有一个表,其中有一列以逗号分隔值。我需要的是当用户输入一个值时,如果该值出现在任何行中,则应将其删除。
例如。

上号

123,234
56,123

如果用户输入 123,则第一列应该只有 234,第二行应该只有 56。
在oracle中我们如何做到这一点?
请帮忙
谢谢

I have a table in oracle with a column with comma separated values. What i need is when a user enters a value and if that value is present in any of the rows, it should be removed.
eg.

COL

123,234
56,123

If user enters 123, the 1st column should have only 234 and second row should have only 56.
How do we do this in oracle??
Please help
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

听,心雨的声音 2024-11-14 20:40:31
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
  • 在前后添加“,”以匹配值开头或结尾的项目。
  • 使用值“,123,”(逗号内)替换,以防止意外匹配 1234。
  • 使用 substr 两次删除第一个和最后一个字符(添加的逗号)
  • 在 where 中使用 instr 可以防止更新不需要更新的记录(更好的性能)。
delete from yourtable t
where
  instr(','||t.col||',', '123') > 0

You can replace '123' with a parameter if you like.

But a better way would be not to store comma separated values, and create a detail table instead. If you need to look for a specific value within a comma separated list, you cannot make use of indices, amongst other limitations.

[edit]
Misunderstood the question. You meant this:

update YourTable t
set
  t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
where
  instr(','||t.col||',', '123') > 0
  • Add ',' before and after to match items at the beginning or end of the value.
  • Replace using the value ',123,' (within comma's) to prevent accidentally matching 1234 too.
  • Use substr twice to remove the first and last character (the added commas)
  • Use instr in the where to prevent updating records that don't need to be updated (better performance).
凡尘雨 2024-11-14 20:40:31

试试这个:

UPDATE t
SET col = REPLACE(REPLACE(col, '&variable', ''), ',', '') FROM t ;

try this :

UPDATE t
SET col = REPLACE(REPLACE(col, '&variable', ''), ',', '') FROM t ;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文