Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Регулярное выражение на латинские буквы в верхнем регистре  [new]
Young Mockin
Member

Откуда:
Сообщений: 75
Не работает для диапазона символов:
declare @ref varchar(16)
set @ref = 'bbbjjj'
SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '%[ABJ]%'
SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '%[A-Z]%'

что я делаю не так?
17 май 13, 09:43    [14309443]     Ответить | Цитировать Сообщить модератору
 Re: Регулярное выражение на латинские буквы в верхнем регистре  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Young Mockin
Не работает для диапазона символов:
declare @ref varchar(16)
set @ref = 'bbbjjj'
SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '%[ABJ]%'
SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '%[A-Z]%'

что я делаю не так?

Либо я не понял, про какой диапазон вы говорите, либо я ламер.

SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '%[A-Z]%'

У меня срабатывает

SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '%[ABJ]%'

нет
SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '%[A-B-J]%'

да

SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '%[A-J]%'

тоже
17 май 13, 09:54    [14309487]     Ответить | Цитировать Сообщить модератору
 Re: Регулярное выражение на латинские буквы в верхнем регистре  [new]
Young Mockin
Member

Откуда:
Сообщений: 75
По идее, оба выражения не должны срабатывать, потому что A-Z - это все символы, но только в верхнем регистре. А получается, что маленькие буквы тоже срабатывают. А вот в варианте, где четко прописаны возможные символы - не срабатывают. В этом и вопрос, что то не то либо у меня с диапазоном, либо у SQL.
17 май 13, 10:00    [14309541]     Ответить | Цитировать Сообщить модератору
 Re: Регулярное выражение на латинские буквы в верхнем регистре  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Young Mockin,

так там стоит %.
17 май 13, 10:02    [14309552]     Ответить | Цитировать Сообщить модератору
 Re: Регулярное выражение на латинские буквы в верхнем регистре  [new]
Glory
Member

Откуда:
Сообщений: 104751
SELECT 1 WHERE @ref COLLATE Cyrillic_General_Bin LIKE '%[A-Z]%'
17 май 13, 10:03    [14309560]     Ответить | Цитировать Сообщить модератору
 Re: Регулярное выражение на латинские буквы в верхнем регистре  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Сергей Викт.,
 declare @ref varchar(16)
set @ref = 'bbbjjj'

SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '[bj][bj][bj][bj][bj][bj]'
SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '[BJ][BJ][BJ][BJ][BJ][BJ]'
SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '[abj][abj][abj][abj][abj][abj]'
SELECT 1 WHERE @ref COLLATE Cyrillic_General_CS_AS LIKE '[ABJ][ABJ][ABJ][ABJ][ABJ][ABJ]'
17 май 13, 10:05    [14309573]     Ответить | Цитировать Сообщить модератору
 Re: Регулярное выражение на латинские буквы в верхнем регистре  [new]
Young Mockin
Member

Откуда:
Сообщений: 75
Glory,

спасибо, вроде подошло. А есть какое то теоретическое объяснение? почему Cyrillic_General_CS_AS c case sensitive не работает, a BIN работает, и почему именно BIN?
17 май 13, 10:57    [14309997]     Ответить | Цитировать Сообщить модератору
 Re: Регулярное выражение на латинские буквы в верхнем регистре  [new]
Glory
Member

Откуда:
Сообщений: 104751
Young Mockin
А есть какое то теоретическое объяснение?

Простое
Не надо представлять себе любой коллейт как тот или иной алфавит из учебника.
http://msdn.microsoft.com/ru-ru/library/ms143726(v=sql.105).aspx
17 май 13, 11:04    [14310049]     Ответить | Цитировать Сообщить модератору
 Re: Регулярное выражение на латинские буквы в верхнем регистре  [new]
Young Mockin
Member

Откуда:
Сообщений: 75
Glory,

О как. Спасибо )
17 май 13, 11:18    [14310145]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить