dailiboy
dailiboy
采纳率50%
2018-09-10 11:56 浏览 7.9k

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

10

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写的程序

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

8条回答 默认 最新

  • 已采纳
    ainiburuqusi ainiburuqusi 2018-09-10 12:33

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

    点赞 3 评论 复制链接分享
  • weixin_42920757 小小菜鸟2020 2018-09-10 12:54

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

    点赞 1 评论 复制链接分享
  • z357904947 目标菜市场 2018-09-10 13:17

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

    点赞 评论 复制链接分享
  • u013271776 火柴-ZYY 2018-09-11 00:21

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

    点赞 评论 复制链接分享
  • weixin_42456466 祗是辉哥哥 2018-09-11 00:38

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

    点赞 评论 复制链接分享
  • xiaming08240316 木炎2019 2018-09-11 01:22

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

    点赞 评论 复制链接分享
  • Sanjay_yww Sanjay_yww 2018-09-11 02:18

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

    点赞 评论 复制链接分享
  • dailiboy dailiboy 2018-12-03 04:37

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

    点赞 评论 复制链接分享

相关推荐