Я пытаюсь найти записи, содержащие строку из 6 или более буквенно-цифровых символов в верхнем регистре. Некоторые примеры:
PENDING 3RDPARTY CODE27
Я использую следующую инструкцию:
SELECT Details
FROM MyTable
WHERE Details LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
Это возвращает все записи, содержащие любое 6 или более буквенное слово, независимо от случая.
Я добавил оператор COLLATE
:
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
Это ничего не меняет. Он по-прежнему возвращает записи с 6-или более буквенным словом, независимо от случая.
Как тест, я попробовал:
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%pending%';
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%PENDING%';
Оба из них работали, возвращая записи, содержащие "ожидающие" и "PENDING" соответственно. Таким образом, проблема связана с сопоставлением шаблонов LIKE
claus.
Что я могу сделать, чтобы выполнить этот чувствительный к регистру поиск?