我有一列是一个文本字符串,其中包含逗号分隔的 id 列表。它可能看起来像这样:
1,2,3,45,65,23245,564747,23,121,54,65,345678
我需要查找它是否包含特定的 id。要获取它是否只包含一个数字,使用正则表达式是相当简单的,但问题是,例如 id 4 不在列表中,但很多 id 包含 4。也许仍然可以写一个可以处理这个问题的正则表达式,但这超出了我的水平。或者有其他方法可以在 SQL 中解决这个问题吗?
编辑
只是为了澄清,我实际上没有包含逗号分隔列表的列。我拥有的是一个由查询中的几行组成的 listagg,我希望能够对其应用过滤器。我只是试图简化问题,以便更关注实际问题。我没有意识到这样做会得到更多关于数据库设计的答案而不是实际问题的答案。
正如其他人所说,逗号分隔值不好,但如果你想要的话,这是一种方法:
select * from t where REGEXP_LIKE (col , '(^|,)4(,|$)')
Run Code Online (Sandbox Code Playgroud)