SQL查询语句,一个字段存储的数据为数组字符串,查询其是否包含某个值

SQL查询语句,一个字段存储的数据为数组字符串,查询其是否包含某个值

问题描述:

A表里面有个字段aa和id,aa是一个数组字符串
id:1 aa:1
id:2 aa:1,2
id:3 aa:2
id:4 aa:1,2,3
等等
我会只等一个数例如 1
查询A表aa字段中包括1
我用like方法查询会出现错误
请问where后面怎么写才能获得正确的结果
我用的ThinkPHP写的程序

SELECT * FROM A a WHERE a.aa like '1%,' or a.aa like '%,1,%'

SELECT * FROM A a WHERE a.aa like '1,%' or a.aa like '%,1,%' or a.aa like '%,1'

你用的什么数据库?
你应该是要查当前值是不是在aa这个数组里,楼上几个方法有个问题,比如你要查的是0,而aa的数组值是1,10,他也会返回结果

select * from A where aa like in(%1%);

正常的话上面的回答是能够解决你的问题的。不过你要注意aa这个字段的类型是什么。是字符串还是其他,sql cast函数可以转换类型

先要看你用的数据库是哪个了,推荐博文给你 https://blog.csdn.net/wttykj/article/details/78520933

SELECT * FROM A a WHERE a.aa like '1,%' or a.aa like '%,1,%' 你可以现在数据库种跑一下,如果成功那证明sql是没问题的,接下来就要看自己用的语言转sql时一些特殊字符的转换了,或者用concat拼接

以上答案都是SQL查询语句,我需要的是THINK PHP 中用模型来进行查询。在THINKPHP 中应该用IN来处理