-
Подскажите, плз, какой collation в MS SQL соответствует кодовой странице Oracle RUSSIAN_CIS.CL8MSWIN1251, а то при запросе из двух СУБД возникает ошибка Cannot resolve collation conflict for equal to operation
-
> collation_name > Имя параметров сортировки, применяемых к выражению, определению > столбца или базы данных. Аргумент collation_name может быть > только указанным Windows_collation_name или SQL_collation_name. > Значение аргумента collation_name должно быть литералом. > Аргумент collation_name не может быть представлен переменной > или выражением.
А что такое RUSSIAN_CIS.CL8MSWIN1251? У MSSQL много различных параметров сортировки, даже два независимых семейства, нет одной. И сортировка не связана с кодовой страницей
-
> Anatoly Podgoretsky © (09.08.10 11:30) [1]
> И сортировка не связана с кодовой страницей
Да как сказать....вот пример с SQL_collation_name
select E_DISC ,ASCII(E_DISC) A ,N from ( select '1' as E_DISC, 1 as N union
select 'a',2 union select 'ф',3 union select 'б',4 union select 'т',5 union select 'а',6 union select 'А',7 union select 'Б',8 union select 'A',9
) S
order by E_DISC COLLATE SQL_Latin1_General_Cp1251_CS_AS
Меняем Cp1251 на Cp1250,Cp1253 или Cp850 и каждый раз видим другой результат сортировки.
-
> Вариант (09.08.2010 12:28:02) [2]
Если ты меняешь, то ты переходишь на другой языковой стандарт, которых в MSSQL fo 135 штук поддержано, а на каждый языковой стандарт по десятку различных Collation. При том это относится только к SQL Collation, который оставлен для совместимости, Windows collation не имеет CollationDesignator в своем название. А используется только название языка, и CaseSensitivity, и AccentSensitivity .. > Latin1_General and French are collation designators that use code page > 1252 А сортировка разная. Русский называется так Cyrillic_General_XX_YY
-
> Следует использовать режимы сопоставления SQL только для > обеспечения совместимости с существующими экземплярами более > ранних версий SQL Server
-
Спасибо, так вот только мне надо в одном запросе сопоставить данные MS SQL и Oracle и возникает вышеописанная ошибка
-
Ну так повторяю вопрос А что такое RUSSIAN_CIS.CL8MSWIN1251?
-
А для сопоставления почему не попробовать просто дописать collate для каждого символьного поля из джойновой таблицы? select VarField collate cyrillic_general_xx_yy
where VarField2='' collate cyrillic_general_xx_yy
|