我想选择列[Name]
只包含大写字母中的西里尔字符的行,以及使用LIKE
的表格中的逗号和连字符:
SELECT *
FROM Clients
WHERE NAME LIKE '%[А-Я][,-]%' COLLATE Cyrillic_General_CS_AS
或使用显式模式:
SELECT *
FROM Clients
WHERE NAME LIKE '%[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ][,-]%' COLLATE Cyrillic_General_CS_AS
但是这些选择了模式中至少存在一个字符的行(但允许模式中不存在任何其他字符)。
也许使用^
(NOT谓词)排除任何其他字符:
SELECT *
FROM Clients
WHERE NAME LIKE '%[^A-Z][./=+]%' COLLATE Cyrillic_General_CS_AS
但这需要枚举大量不必要的字符。
如何做出最佳选择?
答案 0 :(得分:0)
使用双阴性。在您感兴趣的集合中搜索列中至少包含一个字符而不是的行:
SELECT *
FROM Clients
WHERE NAME NOT LIKE '%[^-АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ,]%' COLLATE Cyrillic_General_CS_AS
(我不太确定你是通过将连字符和逗号放在单独的分组中来尝试做什么的,但我现在已将它们移到同一组中,因为这似乎有些意义)