不是啊,我就是要它倒着写 p1p2p3实际上是一个枚举,rightstr取值范围总是'p1',或者'p2','p3'....'pn' 现在我就要将rightstr中为'p1','p2','p3'的取出来 按照一般的逻辑就是该写成 where rightstr in ('p1','p2','p3'),可是这个('p1','p2','p3')偏偏不是固定而是根据其他表的数据动态生成的。 为了这个,我原来写了一大堆复杂的代码,又是回溯又是递归的,现在这样倒着写LIKE,一句话就解决问题了
這就是以p開頭的嗎!SELECT * FROM orderdef WHERE RightStr like 'p%'
p1p2p3实际上是一个枚举,rightstr取值范围总是'p1',或者'p2','p3'....'pn'
现在我就要将rightstr中为'p1','p2','p3'的取出来
按照一般的逻辑就是该写成 where rightstr in ('p1','p2','p3'),可是这个('p1','p2','p3')偏偏不是固定而是根据其他表的数据动态生成的。
为了这个,我原来写了一大堆复杂的代码,又是回溯又是递归的,现在这样倒着写LIKE,一句话就解决问题了
假设rightstr='p5'时,就不要这条记录
假设rightstr='p5'时,就不要这条记录
==================================================================rightstr='p5',上面的語句也可以查得出來啊!你是查不出rightstr='p5'嗎?
假设这个表里有5条记录,从1到5,rightstr的值分别是'p1','p2','p3','p4','p5'
现在我要取出一个子集,但这个子集的条件是不固定的,有时可能是取'p1','p2',有时又可能取'p4','p5',而这个条件又是以一个字符串的形式给出,就是说是以'p1p2'而不是以'p1','p2'这样分开的条件给出,这时,你用常规的 rightstr like '%p1p2%'的形式是取不到'p1','p2'这两条记录的,只能利用SQL SERVER的这个特性倒着写like语句。
p1p
1p
2p3
都给选出来了
SELECT * FROM orderdef
WHERE ('p1p2p3' LIKE '%' + RightStr + '%')