我有一个列是一个文本字符串,其中包含逗号分隔的ID列表。它可能看起来像这样:
1,2,3,45,65,23245,564747,23,121,54,65,345678
我需要查找它是否包含特定的ID。要获得它只是包含一个数字对于正则表达式来说相当简单,但问题是例如id 4不在列表中但很多id包含4.也许它仍然可以写一个可以处理它的正则表达式,但它高于我的水平。或者还有另一种方法可以在SQL中解决这个问题吗?
修改
为了澄清,我实际上没有包含逗号分隔列表的列。我所拥有的是一个listagg,它是由查询中的几行组成的,我希望能够对它应用过滤器。我只是试图简化问题,以便更专注于实际问题。我没有意识到这样做会导致数据库设计上的答案比实际问题更多。
答案 0 :(得分:3)
将值存储在以逗号分隔的列表中是一种非常糟糕的设计模式,它只会带来令人头疼的问题。如果可以,请将其标准化。
如果不能,您可以使用比较中的逗号搜索特定ID:
WHERE [Column] LIKE '%,4,%'
OR [Column] LIKE '4,%'
OR [Column] LIKE '%,4'
答案 1 :(得分:2)
正如其他人所说,逗号分隔的值很糟糕,但如果你想要的话,这是一种方式:
float16