读书人

这条SQL语句很怪的解决思路

发布时间: 2012-01-30 21:15:58 作者: rapoo

这条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好像多此一举了 不知道原题 说错了多见凉

读书人网 >SQL Server

热点推荐