是这样的,我数据库里有个字段,job_like字段
他里面的值都是数组集合型的,如
222,1,2,3,22,122    '第一行
1,7,3,2,8,22   '第二行
8,4,3      '第三行现在,我想在表单里输入一个值,
如果输入2由于只有第一行里有2,那么返回第一行
如果输入3,由于3行里都有3,那么将返回3行
本来想过用 like的,
可是这样不精确,因为比如提交2,他把包含22,212,26等这样的都筛选出来
还请高手指教。

解决方案 »

  1.   

    這麼寫Declare @job Int
    Set @job = 2
    Select * From TableName Where ',' + job_like + '%,' Like ',' + RTrim(@job) + ',%'
      

  2.   

    --寫錯了
    Declare @job Int
    Set @job = 2
    Select * From TableName Where ',' + job_like + ',' Like '%,' + RTrim(@job) + ',%'
      

  3.   

    create table t(job_like varchar(40))
    insert t select '222,1,2,3,22,122'
    union all select '1,7,3,2,8,22'
    union all select '8,4,3'
    gocreate proc prc(@s varchar(20))
    as 
    begin
    select * from t where charindex(','+@s+',',','+job_like+',')>0
    end
    goexec prc '3'
    exec prc '2'
    godrop table t
    drop proc prc
      

  4.   

    或者用CharIndex
    Declare @job Int
    Set @job = 2
    Select * From TableName Where CharIndex(',' + RTrim(@job) + ',', ',' + job_like + ',') > 0
      

  5.   

    可以换种思路
    把2换成",2,"
    select charindex(',2,','222,1,2,3,22,122 ')
      

  6.   

    select charindex(',2,','222,1,2,3,22,122 ')>0
      

  7.   

    Create Table TEST
    (job_like Varchar(100))
    Insert TEST Select '222,1,2,3,22,122'
    Union All Select '1,7,3,2,8,22'
    Union All Select '8,4,3'
    GO
    Declare @job Int
    Set @job = 2
    --方法一:
    Select * From TEST Where ',' + job_like + ',' Like '%,' + RTrim(@job) + ',%'
    --方法二:
    Select * From TEST Where CharIndex(',' + RTrim(@job) + ',', ',' + job_like + ',') > 0
    Set @job = 3
    --方法一:
    Select * From TEST Where ',' + job_like + ',' Like '%,' + RTrim(@job) + ',%'
    --方法二:
    Select * From TEST Where CharIndex(',' + RTrim(@job) + ',', ',' + job_like + ',') > 0
    GO
    Drop Table TEST
    --Result
    /*
    job_like
    222,1,2,3,22,122
    1,7,3,2,8,22job_like
    222,1,2,3,22,122
    1,7,3,2,8,22
    8,4,3
    */
      

  8.   

    chenda8852() ( ) 信誉:100    Blog   加为好友  2007-06-02 10:50:19  得分: 0  
     
     
       如果输入搜索的项是第一项或最后一项
      
     
    -----
    一樣沒有問題的,你試下看。
      

  9.   

    Create Table TEST
    (job_like Varchar(100))
    Insert TEST Select '222,1,2,3,22,122'
    Union All Select '1,7,3,2,8,22'
    Union All Select '8,4,3'
    GO
    Declare @job Int
    Set @job = 122
    --方法一:
    Select * From TEST Where ',' + job_like + ',' Like '%,' + RTrim(@job) + ',%'
    --方法二:
    Select * From TEST Where CharIndex(',' + RTrim(@job) + ',', ',' + job_like + ',') > 0
    GO
    Drop Table TEST
    --Result
    /*
    job_like
    222,1,2,3,22,122
    */