SQL 服务器正则表达式 - 查找字符的单个实例
SQL Server Regex - Find single instance of character
给定以下测试数据,我想 return 所有包含单个与号 (&) 字符且前后没有另一个与号的行。
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 '%(?<!&)&(?!&)%'
但是这个 return 没有行。我该怎么做?
您可以使用模式 %[^&]&[^&]%
来查找前后字符不同的 &
。必须填充短于 3 个字符的字符串才能使此技巧起作用:
WHERE CONCAT('|', vals, '|') LIKE '%[^&]&[^&]%'
给定以下测试数据,我想 return 所有包含单个与号 (&) 字符且前后没有另一个与号的行。
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 '%(?<!&)&(?!&)%'
但是这个 return 没有行。我该怎么做?
您可以使用模式 %[^&]&[^&]%
来查找前后字符不同的 &
。必须填充短于 3 个字符的字符串才能使此技巧起作用:
WHERE CONCAT('|', vals, '|') LIKE '%[^&]&[^&]%'