или казахские
declare @char nvarchar(1) = N'Ә', @char2 nvarchar(1) = N'Ө'; select case when @char = N'Ә' then 1 when @char = N'Ө' then 2 end select case when @char2 = N'Ә' then 1 when @char2 = N'Ө' then 2 end тут более явно видно проблему символы казахские, с казахскими коллейтами работает также (неправильно)
Во-первых, в unicode это: <Ә> 1240, U+04D8 CYRILLIC CAPITAL LETTER SCHWA <Ө> 1256, U+04E8 CYRILLIC CAPITAL LETTER BARRED O И может работать с очень многими collations, вот список только Cyrillic_*, например: Cyrillic_General_CI_AI Cyrillic_General_CI_AI_WS Cyrillic_General_CI_AI_KS Cyrillic_General_CI_AI_KS_WS Cyrillic_General_CI_AS Cyrillic_General_CI_AS_WS Cyrillic_General_CI_AS_KS Cyrillic_General_CI_AS_KS_WS Cyrillic_General_CS_AI Cyrillic_General_CS_AI_WS Cyrillic_General_CS_AI_KS Cyrillic_General_CS_AI_KS_WS Cyrillic_General_CS_AS Cyrillic_General_CS_AS_WS Cyrillic_General_CS_AS_KS Cyrillic_General_CS_AS_KS_WS
Если честно, то: 1. SELECT name FROM sys.fn_helpcollations(); → vim 2. Там превратил результат в: SELECT 'Albanian_BIN' AS collation_name WHERE N'Ә' = N'Ө' COLLATE Albanian_BIN UNION ALL SELECT 'Albanian_BIN2' AS collation_name WHERE N'Ә' = N'Ө' COLLATE Albanian_BIN2 UNION ALL SELECT 'Albanian_CI_AI' AS collation_name WHERE N'Ә' = N'Ө' COLLATE Albanian_CI_AI UNION ALL ... UNION ALL SELECT 'SQL_Ukrainian_CP1251_CS_AS' AS collation_name WHERE N'Ә' = N'Ө' COLLATE SQL_Ukrainian_CP1251_CS_AS 3. Скопировал обратно и выполнил. Наверное, существуют и более адекватные способы... ;)
кайф Спасибо всем за помощь, я бы так кодировку не нашел, но моя функция все еще не работает работать должно следующим образом declare @char nvarchar(1) = N'Ә' COLLATE Cyrillic_General_CI_AI_KS_WS, @char2 nvarchar(1) = N'Ө' COLLATE Cyrillic_General_CI_AI_KS_WS; select case when @char = N'Ә' COLLATE Cyrillic_General_CI_AI_KS_WS then 1 when @char = N'Ө' COLLATE Cyrillic_General_CI_AI_KS_WS then 2 end select case when @char2 = N'Ә' COLLATE Cyrillic_General_CI_AI_KS_WS then 1 when @char2 = N'Ө' COLLATE Cyrillic_General_CI_AI_KS_WS then 2 end но case в обоих случаях равен 1 может я что-то неправильно объявляю?
сработало! Спасибо
Вы что-то неправильно проверяете: https://dbfiddle.uk/p1nIZ2Gb
Хмм... но это, как раз, не работает: https://dbfiddle.uk/Sm31Ryll Или... что Вам нужно-то было? ;)
Kazakh_100_CS_AS_KS_WS_SC_UTF8
Ну и нет же? https://dbfiddle.uk/oas2Z6he
почему? рабоатет
Я думал, что Вам нужен результат equal/equal?
нет,мне нужно отличить символы друг от друга. Сейчас работает как должно
А я подумал, что нужно наоборот. ;)
Обсуждают сегодня