我需要在由各种字符串长度/字符串位置组成的列中找到字符 Ag ,但 Ag 不构成单词的一部分(例如S) AG ,即 Ag 不在任何字母[AZ]之前和/或之后。
我试过了
WHERE AttributeColumn LIKE '%[^A-Z]AG[^A-Z]%'
但它排除了Ag之前或之后没有其他字符的结果(即字符串仅包含 Ag )。也许带有*函数的REGEXP
?因此 Ag 可以在[A-Z]之前和/或之后为零或更多......
如果这可以工作,你可以提供一个MS SQL查询的例子吗?
答案 0 :(得分:1)
如何使用有效的分隔符填充搜索到的字符串,例如空间? e.g。
WHERE ' ' + AttributeColumn + ' ' LIKE '%[^A-Z]AG[^A-Z]%'
答案 1 :(得分:1)
怎么样?,
WHERE AttributeColumn LIKE '%[^A-Z]AG[^A-Z]%'
OR AttributeColumn LIKE 'AG[^A-Z]%'
OR AttributeColumn LIKE '%[^A-Z]AG'
OR AttributeColumn = 'AG'
答案 2 :(得分:0)
您能否匹配搜索的具体情况?如果' Ag'当然没有结果
USE tempdb;
GO
CREATE TABLE dbo.foo(bar VARCHAR(32) COLLATE Latin1_General_CS_AS);
GO
INSERT dbo.foo VALUES('John'),('john');
GO
SELECT bar FROM dbo.foo
WHERE bar LIKE 'j%';
-- 1 row
SELECT bar FROM dbo.foo
WHERE bar COLLATE Latin1_General_CI_AS LIKE 'j%';
-- 2 rows
GO
DROP TABLE dbo.foo;
此处有更多信息Is the LIKE operator case-sensitive with MS SQL server?
答案 3 :(得分:0)
这对你有用吗? ([^A-Z]|\s)AG([^A-Z]|\s)