Sql server 如何像在T-SQL中那样组合以显示除包含“0”的行以外的所有行:&引用&引用-&引用&引用~&引用;?

Sql server 如何像在T-SQL中那样组合以显示除包含“0”的行以外的所有行:&引用&引用-&引用&引用~&引用;?,sql-server,tsql,filtering,Sql Server,Tsql,Filtering,我有一个SQL Server引擎,其中有一个FIELD with filter子句。我需要将该子句组合起来,以显示除包含、-、~的行以外的所有行 我的问题是: SELECT 1 WHERE '' LIKE '%[^:-~]%' 它不工作-它显示零行。我也尝试这样做: SELECT 1 WHERE 'aa:a' LIKE '%[^:-~]%' 它显示为结果1,这不是期望的结果 有没有办法处理这个问题 备注:like之后的表达式必须是字符串,该字符串将保存在表字段中(对于exmaple:“%

我有一个SQL Server引擎,其中有一个FIELD with filter子句。我需要将该子句组合起来,以显示除包含-~的行以外的所有行

我的问题是:

SELECT 1 
WHERE '' LIKE '%[^:-~]%'
它不工作-它显示零行。我也尝试这样做:

SELECT 1 
WHERE 'aa:a' LIKE '%[^:-~]%'
它显示为结果1,这不是期望的结果

有没有办法处理这个问题

备注:
like
之后的表达式必须是字符串,该字符串将保存在表字段中(对于exmaple:
“%[^:-~]%”
将用作
like x.fldFilter

编辑:我需要在SQL Server内的引擎内进行验证。我有一个参数表。里面有一列
格式
。对于特定参数,我需要检查提供的值是否适合
格式

例如:

DECLARE @value AS VARCHAR(1000) = 'aaa:aa';

SELECT 1 FROM dbo.ParameterDefinitions X WHERE @value LIKE X.[Format];
其中
X.[格式]
列包含
'%[^:-~]%'

当我测试一个值检查时,如果它符合条件,则必须返回1,如果不符合条件,则返回nothing

所以,如果我测试值
'aaa:aa'
或者甚至
'
,它会工作。但是当我有空字符串(
“”
)时,该条件不起作用


不幸的是,我不能改变我的引擎,也不能用空格代替
'
。我只是想知道为什么
'
不符合条件?

这是因为SQL Server没有可靠的正则表达式实现

而不是用
^

用“不”来否定它

SELECT 1    
WHERE '' NOT LIKE '%[:-~]%'
返回1行

SELECT 1 
WHERE 'aa:a' NOT LIKE '%[:-~]%'
返回0行

编辑: 分解你的搜索案例

'' LIKE '%[^:-~]%'
[^:-~]
需要一个字符,因此空字符串必须失败

'aa:a' LIKE '%[^:-~]%'
%
是一个0或更多的通配符,它允许
[^:-~]
选择
'a'
,而
%
中的任何一个都可以收集禁止的字符

使用完整的正则表达式引擎,我们可以使用以下
[^:-~]*
重复您的否定范围,但SQL Server不支持这一点


我们剩下的唯一选择是搜索禁止的字符%[:-~]%并对类似的字符求反。

我需要表达式为单个字符串-请参阅我的备注。我有一个在表中有过滤器表达式的引擎。我需要像这样应用它:
像tbl.fldFilter
。在
fldFilter
内部,我需要像
那样的字符串表达式%[^:-~]%'
。因此,您的答案(尽管正确)无法应用于我的问题。因此,它在任何情况下都不起作用,因为
%
,它提供了所有字符。您能列出一个示例列表,列出表中的内容以及要返回的行吗?我更新了我的问题@t-clausen.dk。