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

Откуда:
Сообщений: 217
Запрос

SELECT 1  where (SUBSTRING(N'ңғ', 1, 1)) LIKE '[A-Z, a-z,А-Я, Ё, а-п, р-я, ё, ., -, , 0-9, "]%'


возвращает 1, а как сделать чтобы всё же правильно отрабатывал и возвращал пустоту.
6 окт 18, 08:44    [21696918]     Ответить | Цитировать Сообщить модератору
 Re: Интересный и непонятный результат запроса  [new]
invm
Member

Откуда: Москва
Сообщений: 9125
roma1975
как сделать чтобы всё же правильно отрабатывал и возвращал пустоту.
1. Ознакомиться в документации с синтаксисом шаблонов в LIKE, а не придумывать свой собственный.
2. Ознакомившись, понять что проблема из-за выделенного фрагмента:
SELECT 1  where (SUBSTRING(N'ңғ', 1, 1)) LIKE '[A-Z, a-z,А-Я, Ё, а-п, р-я, ё, ., -, , 0-9, "]%'
6 окт 18, 10:47    [21696952]     Ответить | Цитировать Сообщить модератору
 Re: Интересный и непонятный результат запроса  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Запрос отрабатывает правильно. Достаточно упростить его и становится все понятно:

SELECT '&' where '&' LIKE '[ -,]'
6 окт 18, 11:07    [21696956]     Ответить | Цитировать Сообщить модератору
 Re: Интересный и непонятный результат запроса  [new]
roma1975
Member

Откуда:
Сообщений: 217
Здравствуйте.

Вообще я пытаюсь отловить отсутствие казахских букв в строке в запросе, там в запросе казахская н с хвостиком и г с чёрточкой просто так запрос интересно перевёлся на форуме. Так вот, что-то запросом он не отлавливает их отсутствие. И как правильно сделать, чтобы он их поймал отсутствие казахских букв?
8 окт 18, 05:56    [21697652]     Ответить | Цитировать Сообщить модератору
 Re: Интересный и непонятный результат запроса  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
в like строка наверное тоже юникодная должна быть, т.е. с буквой N.
Попробуйте.
SELECT 1  where (SUBSTRING(N'ңғ', 1, 1)) LIKE N'[A-Z, a-z,А-Я, Ё, а-п, р-я, ё, ., -, , 0-9, "]%'
8 окт 18, 21:29    [21698664]     Ответить | Цитировать Сообщить модератору
 Re: Интересный и непонятный результат запроса  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
Владимир Затуливетер
в like строка наверное тоже юникодная должна быть, т.е. с буквой N.
Попробуйте.
SELECT 1  where (SUBSTRING(N'ңғ', 1, 1)) LIKE N'[A-Z, a-z,А-Я, Ё, а-п, р-я, ё, ., -, , 0-9, "]%'
Во-первых, результат SUBSTRINGа, как уже указали, - символ N'&'.
Во-вторых, зачем в LIKE столько запятых, если достаточно одной, а в данном случае они вообще не нужны?
В-третьих, какой смысл символа '-' между пробелом и запятой? Имелся в виду именно этот символ? Тогда его надо написать в квадратных скобках ('[-]'). Иначе прочитать документацию, как здесь тоже советовали.
В-четвёртых, как оказалось, вопрос вообще связан с казахским алфавитом. Может, заодно и про COLLATE почитать надо?
9 окт 18, 00:03    [21698780]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить