SQL 一个字段中 有个数组  1,2,3,4,5,6怎么通过 SQL语句来查询 这字段中是否存在5 或则 6
我用的是MSSQL数据库 

解决方案 »

  1.   

    select * from table where aa like '%5%' or aa like '%6%'
      

  2.   

    select * from tb where patindex('%[5,6]%',column)>0
      

  3.   

    like 和 charindex 我都用过 他们出现一个严重错误比如 2,3,22,33,222,333 如果搜索 2  22  222都会出来
      

  4.   

    select * from table where aa like '%,5,%' or aa like '%,6,%'
      

  5.   

    select * from table where aa like '%,5,%' or aa like '%,6,%'
    呵呵 这样的话 那我的起始数和和结尾数都要加上  逗号
    那我的数组就要写成 ,1,2,3,4,5,6,
    这样数组不就错误了!
      

  6.   

    LS的情况没考虑全
    CREATE TABLE c
    (
    ID INT PRIMARY KEY IDENTITY(1,1),
    name NVARCHAR(1000)
    )INSERT c(name) 
    SELECT '1,2,3,4,5' UNION ALL
    SELECT '13,54,45,6' UNION ALL
    SELECT '4,5,9' UNION ALL
    SELECT '7,6,456,54' UNION ALL
    SELECT '5,4,9' UNION ALL
    SELECT '6,7,9' UNION ALL
    SELECT '8,9,5,6,7' UNION ALL
    SELECT '8,9,6,5,4,8' UNION ALL
    SELECT '1,2,3,4,51' UNION ALL
    SELECT '13,54,45,63' UNION ALL
    SELECT '4,54,9' UNION ALL
    SELECT '7,65,456,54' UNION ALL
    SELECT '56,4,9' UNION ALL
    SELECT '64,7,9' UNION ALL
    SELECT '8,9,54,64,7' UNION ALL
    SELECT '8,9,64,54,4,8' 
    select * from c where name like '%,5,%' or name like '%,6,%'or name like '%,5' or name like '%,6'or name like '5,%' or name like '6,%'
    5或6可能是最后一个数字
      

  7.   

    谢谢大家! 可能我已开始表达的不是很清楚
    我在表达一次我建立一个表ID  UID               TITLE  
    1   1,2,3,6,7,22,33,222   小李我现在想搜索一下 凡是 ID 等于 2 的用户 显示 小李那就需要 Select Form A  Where UID like '%2%' 
    但是这样的话 UID 22,222的用户登录通用可以看到 TITLE的值
    4楼的朋友让我 ,2,  这样确实可以解决问题 但是这些 我字段中的数组就要前后 都加上 逗号 “,1,2,3,6,7,22,33,222," 
    我觉得这样麻烦 想问问看看有没有别的函数可以这样就像 SQL中的 IN  一样 会自动 就查询数组!!!!!呵呵
      

  8.   

    这样可以:SELECT * FROM #c where ','+name+',' LIKE '%,[56],%'
    但这种违反第一范式的设计,性能不会太好。
      

  9.   

    ls稍修改一下:
    SELECT * FROM #c where ','+name+',' LIKE '%,[5|6],%'
    5或6 [5|6]