SQL LIKE不是/ ^运算符和多个字符

时间:2010-11-19 15:13:38

标签: sql sql-like

所以......我以为我对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,这是不可能完成的事情吗?或者我在这里错过了一些东西,并且周五也想知道它?

3 个答案:

答案 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'