在SQL表中有数组(value1,value2,…)的列中选择



我有一个名为"users"的sql表

在这个表中有一个名为"Cities"的列,里面有一个数组(1,2,3,…)

第一行:"1、2、15、69、98"

row2:"7、9、15 69"

row3:"7、3、1、5、6"

如何选择在同一时间有多个值的行

for exp:我想选择包含1的行

结果应该显示row1和row3。

你可以参考这里

SELECT *
FROM users
WHERE INSTR(cities, '1',1)>0;

Use FIND_IN_SET:

SELECT *
FROM users
WHERE FIND_IN_SET('1', Cities) > 0

正如其他人所提到的,在users表中存储CSV数据是次优的,因为它破坏了数据库所具有的许多关系功能。但如果你必须继续这样做,FIND_IN_SET可能会让你这样做。

即使可以,我还是强烈建议在列中存储单个值。

SELECT *
FROM users
where Concat(',',col,',') like '%,1,%'

对于另一种方法,我使用LIKE发布了这个答案。但是Tim的FIND_IN_SET在这里是一个更好的方法

我想很简单,它应该可以满足你的要求:

SELECT *
FROM users
WHERE Cities LIKE '%1,%'

最新更新