SQL Server如何编写单条正则模式匹配特定字符组合替代多个LIKE条件
可以实现,需要依赖SQL Server的CLR正则支持:
SQL Server 原生的 LIKE 和 PATINDEX 本身不支持在单个表达式内定义多规则「或」逻辑,无法直接用单个原生通配符表达式替代你现在的三个OR条件。开启CLR集成的正则功能后,就可以用单个标准正则表达式实现需求:
AND Regex.IsMatch(TIL.code, '^fs|tf|ls') = 1
正则规则说明:
^fs匹配以fs开头的编码,等价于原条件的code like 'fs%'tf匹配任意位置包含tf的编码,等价于原条件的LIKE '%tf%'ls匹配任意位置包含ls的编码,等价于原条件的LIKE '%ls%'
多个规则之间用|分隔表示或逻辑,和你原来的多LIKE筛选逻辑完全一致。
补充建议
如果你的数据库实例没有开启CLR支持,不建议为了这个需求单独开配置:你原来的多LIKE写法可读性更高,而且其中fs%属于前缀匹配,符合索引命中规则,执行效率比正则匹配更高,实际业务中更推荐使用原有写法。
内容的提问来源于stack exchange,提问作者Discover
相关产品推荐
相关产品推荐

