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

Откуда: Москва
Сообщений: 895
Hello world!
В ASCII символ 'A' имеет код 65, символ 'z' - код 122. В диапазоне между ними находится символ '\' с кодом 92
declare @t1 as varchar(100)
set @t1 = '\' 

SELECT CAST(@t1 AS binary) AS Hex,
      CASE WHEN @t1 like '%[A-z]%'  
	    THEN N'Да, в ДИАПАЗОНЕ'
	    ELSE N'Нет, не в ДИАПАЗОНЕ'
      END AS [ASCII A-z]


Подскажите, почему like его не находит?

К сообщению приложен файл. Размер - 16Kb
11 окт 17, 13:17    [20860622]     Ответить | Цитировать Сообщить модератору
 Re: LIKE  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Yagrus2,

всё зависит от COLLATE. Он у вас какой?
Если надо именно по кодам символов упорядочивать,
то можно применить бинарный, например, Cyrillic_General_BIN
11 окт 17, 13:28    [20860699]     Ответить | Цитировать Сообщить модератору
 Re: LIKE  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
declare @t1 as varchar(100)
set @t1 = '\' 

SELECT CAST(@t1 AS binary) AS Hex,
      CASE WHEN @t1 like '%[A-z]%' COLLATE Cyrillic_General_BIN
	    THEN N'Да, в ДИАПАЗОНЕ'
	    ELSE N'Нет, не в ДИАПАЗОНЕ'
      END AS [ASCII A-z]
11 окт 17, 13:30    [20860711]     Ответить | Цитировать Сообщить модератору
 Re: LIKE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
iap,
Спасибо, за ответ!
У меня коллейшн SQL_Latin1_General_CP1_CI_AS
11 окт 17, 13:56    [20860839]     Ответить | Цитировать Сообщить модератору
 Re: LIKE  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Yagrus2
iap,
Спасибо, за ответ!
У меня коллейшн SQL_Latin1_General_CP1_CI_AS
Порядок символов в этом COLLATE легко увидеть:
SELECT v.number, [символ]=CHAR(v.number)
FROM master.dbo.spt_values v
WHERE v.type='P' AND v.number BETWEEN 32 AND 254
ORDER BY CHAR(v.number) COLLATE SQL_Latin1_General_CP1_CI_AS;
Но надо иметь в виду, что COLLATE влияет на упорядочивание не только отдельных символов,
а и некоторых сочетаний символов (например, "ch", "ph" и т.п.).

В общем, применять диапазоны символов (например, A-z), надо с осторожностью.
11 окт 17, 14:06    [20860919]     Ответить | Цитировать Сообщить модератору
 Re: LIKE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
iap,

Спасибо подробное разъяснение!
Только вот не пойму...
CI - задает игнорирование регистра.
В вашем запросе:
латинские одноименные символы сгруппированы верхний-нижний регистр, нижний-верхний,
а кириллица сгруппирована группами все заглавные и все маленькие...

Подскажите, с чем это связано?
11 окт 17, 20:26    [20862118]     Ответить | Цитировать Сообщить модератору
 Re: LIKE  [new]
o-o
Guest
Yagrus2
CI - задает игнорирование регистра.
В вашем запросе:
латинские одноименные символы сгруппированы верхний-нижний регистр, нижний-верхний,
а кириллица сгруппирована группами все заглавные и все маленькие...
Подскажите, с чем это связано?

с тем и связано, что кириллицу надо кириллическим коллэйшеном сортировать,
а не латинским: в латинском кириллицы просто нет.
так что она просто не отсортирована, как ее сгенерили, так и вывалили
11 окт 17, 20:50    [20862157]     Ответить | Цитировать Сообщить модератору
 Re: LIKE  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 895
Еще, раз спасибо!
16 окт 17, 21:01    [20874096]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить