powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
16 сообщений из 16, страница 1 из 1
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620481
RuCosinus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

В коде есть проверка на соответствие символов в строке некоему подмножеству символов. Недавно заметил, что он не отрабатывает на символе номера №, как нужно (то есть, видимо, отрабатывает верно, просто я чего-то не понимаю).

Упрощенный код:

Код: sql
1.
2.
if UPPER('№') like '%[^/?:().,''+ A-Z0-9-]%'
	select 'ERR'



Никак не пойму, почему он считает, что символ № попадает в указанный диапазон.
Подскажите, где может быть зарыта собака. Может что-то с кодировками где-то что-то указать нужно строго? Все остальные символы отрабатывают адекватно моему ожиданию.
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620486
Гигабайт Мегабайтович Килобайтов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а у меня всё штатно работает )) ?
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620496
RuCosinus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гигабайт Мегабайтович Килобайтова у меня всё штатно работает )) ?
Вооот... Тоже какой-никакой результат. Значит что-то "в консерватории" править нужно. Но что?
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620497
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Информация для размышления:
Код: sql
1.
2.
3.
4.
5.
if UPPER('№') like '%[^/?:().,''+ A-Z0-9-]%' collate Cyrillic_General_Bin
	select 'ERR'

if UPPER('№') like '%[^/?:().,''+ A-Z0-9-]%' collate Cyrillic_General_CI_AS
	select 'ERR'
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620507
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще
Код: sql
1.
2.
3.
4.
if UPPER('№') like '%[^/?:().,''+ A-Z0-9-]%' collate Cyrillic_General_CI_AS
	select 'ERR'
if UPPER('№') like '%[/^?:().,''+ A-Z0-9-]%' collate Cyrillic_General_CI_AS
	select 'ERR'
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620508
Гигабайт Мегабайтович Килобайтов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

ну вот . а только я хотел пообщаться с товарищем ))
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620512
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или даже так :)
Код: sql
1.
2.
3.
4.
5.
if UPPER('0') like '%[^/?:().,''+ A-Z0-9-]%' 
	select 'ERR'

if UPPER('0') like '%[/^?:().,''+ A-Z0-9-]%' 
	select 'ERR'



Все дело в ^
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620515
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544Или даже так :)
Код: sql
1.
2.
3.
4.
5.
if UPPER('0') like '%[^/?:().,''+ A-Z0-9-]%' 
	select 'ERR'

if UPPER('0') like '%[/^?:().,''+ A-Z0-9-]%' 
	select 'ERR'



Все дело в ^
тут всё дело в вашей голове. А умные люди говорят смотреть на collate
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620522
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гораздо правильнее вообще не пользоваться диапазонами.
Все беды от них. Разве так сложно просто написать все символы явно?
И COLLATE тогда будет неважен.

От A до Z - всего 26 символов, от 0 до 9 - всего 10. Эх, лень-матушка...
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620585
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мммда
Код: sql
1.
2.
if '№' collate Latin1_General_CI_AS = '?' collate Latin1_General_CI_AS select 'ERR2'
select  ASCII('№' collate Latin1_General_CI_AS) , ASCII('?' collate Latin1_General_CI_AS)


прям открыли глаза...
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620590
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KRS544мммда
Код: sql
1.
2.
if '№' collate Latin1_General_CI_AS = '?' collate Latin1_General_CI_AS select 'ERR2'
select  ASCII('№' collate Latin1_General_CI_AS) , ASCII('?' collate Latin1_General_CI_AS)


прям открыли глаза...
дык нету шапочки
http://collation-charts.org/mssql/mssql.0409.1252.Latin1_General_CI_AI.html
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620595
KRS544
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK, да понятно, нет в латинской кодировке №, это символ в ? преобразуется
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620602
RuCosinus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо.

Хоть мои предположения относительно кодировки оказались не совсем впрямую влияющими, но тем не менее я был близок. Собака порылась в collation.
Спасибо всем за популярное разъяснение.
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620614
нуб987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapГораздо правильнее вообще не пользоваться диапазонами.
Все беды от них. Разве так сложно просто написать все символы явно?
И COLLATE тогда будет неважен.

От A до Z - всего 26 символов, от 0 до 9 - всего 10. Эх, лень-матушка...
если это сарказм и ирония, то дальше мой комментарий можете не читать

но если вы это на полном серьезе...
если есть возможность использовать диапазон, почему бы этим не пользоваться? Чего плохого в сокращении кода? А то сейчас скатимся до машинных кодов.
Если я напишу вот так:
абвгдежзийклмнопрстуфхцчшщъыьэюя

или так
абвгдежзийкчмнопрстуфхцлшщъыьэюя

вы сможете сходу определить, какие буквы поменяны местами или какой не хватает?
А если такого кода не на одну страничку, а несколько мегабайт и вы дополняете/правите чужой код?
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620617
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нуб987,

Порядок не имеет значение.
Если бы ТС сразу указал все что он хочет отфильтровать, то и темы бы не было.
Если вы беконечно лайкаете, то что-то с архитектурой у вас сильно не так
...
Рейтинг: 0 / 0
Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
    #39620685
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нуб987если есть возможность использовать диапазон, почему бы этим не пользоваться? Чего плохого в сокращении кода?Плохо, что такая запись зависит от COLLATE.
А без диапазонов имеет однозначный смысл.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оператор LIKE по шаблону не срабатывает на символ номера (N с кружочком)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]