|1|5|7|9|like '%|'+ cast(tid as nvarchar) +'|%'

解决方案 »

  1.   

    "'" + Tid + "'" Like '%|'+ cast(tid as nvarchar) +'|%' 
      

  2.   


    如果Tid有 51|79 或者51  后面条件怎么加
      

  3.   


    如果Tid有 51|79 或者51  后面条件怎么加如果你是非text字段('|'+ tid +'|') like ,不过一般见意你在保存时,直接"|"+ tillist +"|"
      

  4.   

    查询51  格式 51|54|52 也可能是52|51|54 还可能是52|54|51 或者是单独一个51
       like '%|'+ cast(51 as nvarchar) +'|%'查询51  格式 51|54|52 也可能是52|51|54 还可能是52|54|51 或者是单独一个51
       like '%|'+ cast(51 as nvarchar) +'|%'
      

  5.   

    先将 51|54|52 ==> |51|54|52| 否则你就要多写三个like关联and(like tid
    or like tid +'|%'

    or like '%|'+ tid +'|%'
    or like '%|'+ tid
    )
      

  6.   

    or like '%|'+ tid会模糊查询出63|511  额,头疼啊
      

  7.   

    如果table2.Tid是text|ntext,是不能用=做比较的,也不能用加法运算where 1=1 and 
    ( table2.Tid like cast(table1.Tid as nvarchar(10)) //比较只有51的情况下
    or table2.Tid like cast(table1.Tid as nvarchar(10) +'|%' //比较51在第一位的情况下
    or  table2.Tid like '%|'+ cast(table1.Tid as nvarchar(10) +'|%' //比较51在中间的情况下
    or table2.Tid like '%|'+ cast(table1.Tid as nvarchar(10) //比较51在尾部的情况下
    )还有一种就是开启全文索引,不是所有网络空间都有
      

  8.   


    哦,nvarchar(10) 是固定了,  但是我也不确定 查询的是几位数。万一是500出来了, 我也总不能老改 nvarchar(10)呀
      

  9.   

    //比较51在尾部的情况下
    63|511 会把511也模糊查询出来。不知道你明白我说的没应该不会的,你自己可以测试一下
    Select 1 From 随便一个表 WHere '54|511' like '%51'
    Select 1 From 随便一个表 WHere '54|511' like '%511'
      

  10.   

     select t.FaultType from 
    (select * from Posss_FaultReport where not CheckDate is  NULL) as t  where t.FaultType ='51' or 
    t.FaultType like '%|'+ cast(51 as  nvarchar(10))+ '%' or t.FaultType like '%'+ cast(51 as  nvarchar(10))+ '|%'还是会出现41|78|79|251|451   不行呀。 没有别的方法了吗?
      

  11.   

    你确定你的条件写对了? select t.FaultType from 
    (select * from Posss_FaultReport where not CheckDate is  NULL) as t  where t.FaultType ='51' or 
    t.FaultType like '%|'+ cast(51 as  nvarchar(10))+ '%' or t.FaultType like '%'+ cast(51 as  nvarchar(10))+ '|%'还是会出现41|78|79|251|451   不行呀。 没有别的方法了吗?
      

  12.   

     select t.FaultType from 
    (select * from Posss_FaultReport where not CheckDate is  NULL) as t  where t.FaultType ='51' or 
    t.FaultType like '%|'+ cast(51 as  nvarchar(10))+ '%' or t.FaultType like '%'+ cast(51 as  nvarchar(10))+ '|%'还是会出现41|78|79|251|451   不行呀。 没有别的方法了吗?恩,全写了。  select t.FaultType from 
    (select * from Posss_FaultReport where not CheckDate is  NULL) as t  where t.FaultType ='51' or 
    t.FaultType like '%|'+ cast(51 as  nvarchar(10))+ '%' or t.FaultType like '%'+ cast(51 as  nvarchar(10))+ '|%' or 
    t.FaultType like '%|'+ cast(51 as  nvarchar(10))+ '|%'
    这是查询出的31|43|251|271
      

  13.   

    //比较51在尾部的情况下
    63|511 会把511也模糊查询出来。不知道你明白我说的没应该不会的,你自己可以测试一下
    Select 1 From 随便一个表 WHere '54|511' like '%51'
    Select 1 From 随便一个表 WHere '54|511' like '%511'哦哦是我看错了,没错。sorry