Sql server 如何像在T-SQL中那样组合以显示除包含“0”的行以外的所有行:&引用&引用-&引用&引用~&引用;?
我有一个SQL Server引擎,其中有一个FIELD with filter子句。我需要将该子句组合起来,以显示除包含、-、~的行以外的所有行 我的问题是: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:“%
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。