日期:2014-05-19  浏览次数:20472 次

这条SQL语句很怪的
今天看了别人写的一个SELECT语句
select   top   1   *   from   XT_LMGL   where   ( '0, '+YGIDS+ ',0 '     like   '%,1,% ')   AND   GLLM> 0   and   (   GLLM=2   OR   GLLM=0)

其中YGIDS字段只是些数字,   为什么这里要像这样写( '0, '+YGIDS+ ',0 '     like   '%,1,% '),     用“YGIDS=1”   这样可以吗?

------解决方案--------------------
原句應該是

select top 1 * from XT_LMGL where ( '%, '+YGIDS+ ',% ' like '%,1,% ') AND GLLM> 0 and ( GLLM=2 OR GLLM=0)


------解决方案--------------------
( '0, '+YGIDS+ ',0 ' like '%,1,% ')

YGIDS 里~如果是 '1,2 '或 '2,21,1 ' 那( '0, '+YGIDS+ ',0 ' like '%,1,% ')可以找到
(YGIDS like '%,1,% ')找不到

------解决方案--------------------
如果YGIDS字段只是数字,不包括标点可以。
------解决方案--------------------
原句應該是

select top 1 * from XT_LMGL where ( '%, '+YGIDS+ ',% ' like '%,1,% ') AND GLLM> 0 and ( GLLM=2 OR GLLM=0)

老兄,你这种写法也是错误的

select top 1 * from XT_LMGL where (YGIDS like '%1% ') AND GLLM> 0 and ( GLLM=2 OR GLLM=0)
这种才对
------解决方案--------------------
select top 1 * from XT_LMGL where YGIDS like '%,1,% ' AND GLLM> 0 and ( GLLM=2 OR GLLM=0)

代码应该是想要字段里面单独1得数 最后那个gllm> 0之后 还再and gllm=2 or gllm=0好像多此一举了 不知道原题 说错了多见凉