所以......我以为我对mssql了解得相当不错,但是今天我问到的这个问题让我感到困惑。基本上,一段代码使用LIKE子句来确定如何过滤某些值。我必须指出这个不能改变,我们不能修改查询使用NOT LIKE。但如果这就是我想做的呢?考虑这个例子:
select * from
(
select '1.2A' as num
union
select '1.3A' as num
union
select '1.4A' as num
union
select '1.4B' as num
union
select '1.5A' as num
) as test
where num like '1.[^4]_'
现在..如何修改WHERE以返回除1.4A之外的所有内容?出于显而易见的原因,你不能做[^ 4A]甚至[^ 4] [^ A]。如果不使用NOT LIKE,这是不可能完成的事情吗?或者我在这里错过了一些东西,并且周五也想知道它?
答案 0 :(得分:2)
如果你只能在LIKE之后改变表达式,那么你就不能用简单的LIKE来做到这一点。
你至少不需要或者不喜欢。您需要正则表达式的匹配功能,这在SQL Server中不易获得。
答案 1 :(得分:1)
代码SQL注入是否安全?因为我认为注射是唯一的方法。通常,只有_
和%
在LIKE
个操作数中具有含义。
答案 2 :(得分:0)
如果它真的只是您要排除的4A,那么:
select * from
(
select '1.2A' as num
union
select '1.3A' as num
union
select '1.4A' as num
union
select '1.4B' as num
union
select '1.5A' as num
) as test
where num like '1.[0-9]_'
and RIGHT(num,2)<> '4A'