Конференция "Базы" » Проблема с Collation [D7, MSSQL]
 
  • Patrick (09.08.10 11:14) [0]
    Подскажите, плз, какой collation в MS SQL соответствует кодовой странице Oracle RUSSIAN_CIS.CL8MSWIN1251, а то при запросе из двух СУБД возникает ошибка Cannot resolve collation conflict for equal to operation
  • Anatoly Podgoretsky © (09.08.10 11:30) [1]

    > collation_name
    > Имя параметров сортировки, применяемых к выражению, определению
    > столбца или базы данных. Аргумент collation_name может быть
    > только указанным Windows_collation_name или SQL_collation_name.
    >  Значение аргумента collation_name должно быть литералом.
    >  Аргумент collation_name не может быть представлен переменной
    > или выражением.


    А что такое RUSSIAN_CIS.CL8MSWIN1251?
    У MSSQL много различных параметров сортировки, даже два независимых семейства, нет одной. И сортировка не связана с кодовой страницей
  • Вариант (09.08.10 12:28) [2]

    > 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  и каждый раз видим другой результат сортировки.
  • Anatoly Podgoretsky © (09.08.10 13:36) [3]
    > Вариант  (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
  • Anatoly Podgoretsky © (09.08.10 13:40) [4]

    > Следует использовать режимы сопоставления SQL только для
    > обеспечения совместимости с существующими экземплярами более
    > ранних версий SQL Server
  • Patrick (09.08.10 14:36) [5]
    Спасибо, так вот только мне надо в одном запросе сопоставить данные MS SQL и Oracle и возникает вышеописанная ошибка
  • Anatoly Podgoretsky © (09.08.10 14:47) [6]
    Ну так повторяю вопрос
    А что такое RUSSIAN_CIS.CL8MSWIN1251?
  • BoxTer (10.08.10 06:42) [7]
    А для сопоставления почему не попробовать просто дописать collate для каждого символьного поля из джойновой таблицы?
    select VarField collate cyrillic_general_xx_yy
    where VarField2='' collate cyrillic_general_xx_yy

 
Конференция "Базы" » Проблема с Collation [D7, MSSQL]
Есть новые Нет новых   [134433   +21][b:0][p:0.001]