Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Владимир СА Member Откуда: Сообщений: 7882 |
Прошу помощи... Сервер MS SQL 2008R2 Имеется инфа о серии документа... Требования к серии: 1. в серии должен быть дефис 2. Часть перед дефисом может содержать только буквы I, X, V, L, C, D, M (латинские) или Х, С, М русские. Содержит не меньше одной буквы. 3. Часть после дефиса может содержать только русские заглавные буквы количеством ровно 2 штуки. Т.е. из набора: SELECT name FROM (SELECT 'XIII-РЕ' name UNION ALL SELECT '1234567' UNION ALL SELECT '1-ФМ' UNION ALL SELECT 'I-КИ' UNION ALL SELECT '12-УК' UNION ALL SELECT 'XM-САР' UNION ALL SELECT 'X-ГН' ) x WHERE name like ....должны выбраться
Что-то аналогичное в Предикат LIKE и регулярные выражения |
|||||
20 июл 16, 03:37 [19429518] Ответить | Цитировать Сообщить модератору |
d_lendnev
Guest |
думаю как то так: WHERE name like '%[IXVLCDMХСМ]-[А-Я][А-Я]' |
20 июл 16, 04:19 [19429522] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7882 |
|
||
20 июл 16, 06:04 [19429543] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Не верите? Допишите на первое место в строке что-нибудь неправильное - этот шаблон пропустит (ибо начинается с %). Это, видимо, римские числа в начале строк? Но буквы в них не могут стоять в произвольном порядке. |
||||
20 июл 16, 10:24 [19430037] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7882 |
Кто-то проверял на правильность составления римского числа ? |
||||
20 июл 16, 10:27 [19430053] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
|
||||
20 июл 16, 10:33 [19430083] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7882 |
|
||||
20 июл 16, 10:37 [19430107] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
|
||||
20 июл 16, 10:47 [19430158] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7882 |
|
||||
20 июл 16, 10:51 [19430176] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7882 |
А не до конца проверяет предикат... SELECT name FROM ( SELECT 'ЮI-БЯ' as name ) x WHERE name collate Cyrillic_General_CS_AS like '%[IXVLCDMХСМ]-[А-Я][А-Я]'; И он считает это нормальным...
Т.е. предикат проверяет "I-БЯ" на правильность... Как проверить предикатом всю левую часть серии на принадлежность всех букв из [IXVLCDMХСМ] ? Или все таки надо парсить всю серию ? (что не очень хочется) |
|||||||
23 авг 16, 08:39 [19576724] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
SELECT name FROM ( SELECT 'ЮI-БЯ' as name UNION ALL SELECT 'XIII-РЕ' UNION ALL SELECT '1234567' UNION ALL SELECT '1-ФМ' UNION ALL SELECT 'I-КИ' UNION ALL SELECT '12-УК' UNION ALL SELECT 'XM-САР' UNION ALL SELECT 'X-ГН' ) x WHERE name collate Cyrillic_General_CS_AS like replicate('[IXVLCDMХСМ]', len(name) - 3) + '-[А-Я][А-Я]'; |
23 авг 16, 09:38 [19576931] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7882 |
Просто повторить левые символы... Хорошая идея... |
||
23 авг 16, 09:58 [19577029] Ответить | Цитировать Сообщить модератору |
Serg_77m Member Откуда: Донецк Сообщений: 237 |
А так?SELECT name FROM ( SELECT 'ЮI-БЯ' as name UNION ALL SELECT 'XIII-РЕ' UNION ALL SELECT '1234567' UNION ALL SELECT '1-ФМ' UNION ALL SELECT 'I-КИ' UNION ALL SELECT '12-УК' UNION ALL SELECT 'XM-САР' UNION ALL SELECT 'X-ГН' ) x where name like '%[IXVLCDMХСМ]-[А-Я][А-Я]' and name not like '%[^IXVLCDMХСМ]%-%' |
23 авг 16, 13:52 [19578662] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
Serg_77m, зря collate CS вышвырнули, теперь пропускает строчные буквы |
23 авг 16, 14:40 [19579064] Ответить | Цитировать Сообщить модератору |
Serg_77m Member Откуда: Донецк Сообщений: 237 |
o-o, да, согласен. |
23 авг 16, 17:44 [19580464] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7882 |
Хм... o-o, Serg_77m
Большое спасибо всем... |
|
24 авг 16, 07:18 [19582384] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |