如何查询逗号分隔的字符串?

7

Table_a

column name: list_id
record 1: 1,2,5,6,8
record 2: 1,3,2
record 3: 6,7,2
record 4: 9,8,0

表格_b

id ='2';

如何选择具有id='2'的逗号分隔字符串中的记录?从上面的示例中,它应该返回记录1、2和3。

查询(如何修改此查询,请参见以下内容):

SELECT * FROM Table_a,Table_b WHERE Table_b.id = Table_a.list_id;

4
规范化你的数据。问题解决了。 - user557846
2
Where Table_a.list_id like '%' + Table_b.id+ '%' - print x div 0
1
@Keren 请查看此链接 - Yash
@sagi。是的,可能是这样。我只是想指出“Like”运算符和通配符。 - print x div 0
如果我有一枚镍币,每当出现“无法归一化”的情况时,我就会变得富有... - Strawberry
显示剩余2条评论
2个回答

3

使用find_in_set函数,但这并不是最优化的方法。您应该将数据进行规范化。

SELECT * FROM 
Table_a AS a 
JOIN Table_b AS b ON FIND_IN_SET(b.id,a.list_id)

0

这应该适用于您

SELECT * FROM Table_a,Table_b WHERE Table_b.id = Table_a.list_id and 
concat(',',Table_a.list_id,',') like '%,2,%'

为什么要使用@sagi?请分享原因,以便我在这里进行编辑。 - ManiMuthuPandi
因为list_id的最后一个数字没有逗号。 - J.K
在我的查询 concat(',',Table_a.list_id,',') 中,我在两端都附加了逗号。 - ManiMuthuPandi
由于 where 子句将会是 false,因此 id <> list_id。 - sagi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接