你的意思好象表達不太清楚?是不是字段中有'p1p2p3',就選出來?SELECT * FROM orderdef WHERE RightStr like '%p1p2p3%'

解决方案 »

  1.   

    不是啊,我就是要它倒着写
    p1p2p3实际上是一个枚举,rightstr取值范围总是'p1',或者'p2','p3'....'pn'
    现在我就要将rightstr中为'p1','p2','p3'的取出来
    按照一般的逻辑就是该写成 where rightstr in ('p1','p2','p3'),可是这个('p1','p2','p3')偏偏不是固定而是根据其他表的数据动态生成的。
    为了这个,我原来写了一大堆复杂的代码,又是回溯又是递归的,现在这样倒着写LIKE,一句话就解决问题了
      

  2.   

    這就是以p開頭的嗎!SELECT * FROM orderdef WHERE RightStr like 'p%'
      

  3.   

    当然不是以'p'开头啊
    假设rightstr='p5'时,就不要这条记录
      

  4.   

    当然不是以'p'开头啊
    假设rightstr='p5'时,就不要这条记录
    ==================================================================rightstr='p5',上面的語句也可以查得出來啊!你是查不出rightstr='p5'嗎?
      

  5.   

    哎呀,我再说细点
    假设这个表里有5条记录,从1到5,rightstr的值分别是'p1','p2','p3','p4','p5'
    现在我要取出一个子集,但这个子集的条件是不固定的,有时可能是取'p1','p2',有时又可能取'p4','p5',而这个条件又是以一个字符串的形式给出,就是说是以'p1p2'而不是以'p1','p2'这样分开的条件给出,这时,你用常规的 rightstr like '%p1p2%'的形式是取不到'p1','p2'这两条记录的,只能利用SQL SERVER的这个特性倒着写like语句。
      

  6.   

    有创意, 逆向思维; 给大家分享经验,good man
      

  7.   

    倒着写不安全,万一记录里有:
    p1p
    1p
    2p3
    都给选出来了
      

  8.   

    本来就可以。 between之类的也可以。
      

  9.   

    这个不行,搜索不出结果
    SELECT * FROM orderdef
    WHERE ('p1p2p3' LIKE '%' + RightStr + '%')