表 table_1数据如下:
name  value
11    1
22    2
12    1;2希望使用如下语句将表里的三行记录都查询出来,发现达不到效果,烦请指点:
SELECT * FROM Table_1 WHERE   PATINDEX('%1;2%',value)>0 or PATINDEX('%'+VALUE+'%','11112')>0

解决方案 »

  1.   

    SELECT * FROM Table_1 
    WHERE charindex(';1;',';'+value+';')>0 or charindex(';2;',';'+value+';')>0
      

  2.   

    你的实际数据跟你给的测试数据不一样?
    ---测试数据---
    if object_id('[table_1]') is not null drop table [table_1]
    go
    create table [table_1]([name] int,[value] varchar(3))
    insert [table_1]
    select 11,'1' union all
    select 22,'2' union all
    select 12,'1;2'
     
    ---查询---
    SELECT * FROM Table_1 
    WHERE charindex(';1;',';'+value+';')>0 or charindex(';2;',';'+value+';')>0---结果---
    name        value
    ----------- -----
    11          1
    22          2
    12          1;2(3 行受影响)
      

  3.   

    SELECT * FROM Table_1 WHERE PATINDEX('^1;2',value)>0 or PATINDEX('^'+VALUE,'11112')>0