我正在尝试在 SQL Server 中编写一些正则表达式来匹配除字母之外的字符串之前或之后的任何内容。
'%ABC%'
不起作用,因为它包含字母。
'%[^a-z]ABC[^a-z]%'
不起作用,因为它不会与结果以ABC
. 因为[^a-z]
意味着不是字母字符但仍然是字符的任何字符。
解决这个问题的正则表达式是:
[^a-z]ABC[^a-z]|ABC[^a-z]|[^a-z]ABC
但你不能用 SQL 写成:
'%[^a-z]ABC[^a-z]|ABC[^a-z]|[^a-z]ABC%'
或者
'%[^a-z]ABC[^a-z]%|%ABC[^a-z]%|%[^a-z]ABC%'
我不想OR
在我的 SQL 中使用,因为我有一个存储过程,其中包括:
WHERE var like @var
我会用类似的东西来执行它
@var = '%[^a-z]APU[^a-z]%'
我宁愿没有多个参数,也不想尝试将多个值传递给单个参数。
有没有办法调整可以开始或结束字符串的'%[^a-z]ABC[^a-z]%'
此类的正则表达式ABC
?
你可以这样做:
where ' ' + var + ' ' like '%[^a-z]ABC[^a-z]%'
这也将匹配字符串开头和结尾的模式。
不过,我不确定这是否真的满足您的要求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句