SQL Server Regex - 查找单个字符实例
Posted
技术标签:
【中文标题】SQL Server Regex - 查找单个字符实例【英文标题】:SQL Server Regex - Find single instance of character 【发布时间】:2020-10-21 09:10:42 【问题描述】:鉴于以下测试数据,我想返回所有包含单个 & 字符的行,该字符之前或之后没有另一个 & 字符。
CREATE TABLE #RegexTest (Vals VARCHAR(10));
INSERT INTO #RegexTest (Vals) VALUES
('&'), /* match */
('&&'),
('1 & 2'), /* match */
('1 && 2'),
('1 && 2&') /* match */
我尝试了以下使用负前瞻和负后瞻的方法:
SELECT *
FROM #RegexTest
WHERE Vals LIKE '%(?<!&)&(?!&)%'
但这不会返回任何行。我该怎么办?
【问题讨论】:
您的LIKE
表达式只会查找字段为Vals
的行包含包含文字字符串(?<!&)&(?!&)
的字符串,因为SQL 服务器不支持正则表达式。
【参考方案1】:
您可以使用模式%[^&]&[^&]%
来查找前后没有相同字符的&
。必须填充短于 3 个字符的字符串才能使此技巧起作用:
WHERE CONCAT('|', vals, '|') LIKE '%[^&]&[^&]%'
【讨论】:
以上是关于SQL Server Regex - 查找单个字符实例的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 中将多行文本连接成单个文本字符串