SQL Collation problems

Dantist

Ситуация такая:етсть таблица Т1 (id, name) c Cyrillic_General_CI_ASи таблица Т2(name) c SQL_Latin1_General_Cp850_BINдак вот не получатся
select T1.id from T1, T2
where T1.name=T2.name
Как быть подскажите пожалуйста
24 ответа

Dantist


Dantist

Только что писал у себя такой запрос :-)
select T1.id 
from T1 inner join T2 on (T1.name=T2.name COLLATE SQL_Latin1_General_Cp850_BIN)


Dantist

Ребята, не дайте дураком помереть!проситал все сообщения по этому поводу, попробовал все варианты ну не работает !решил сделать подругомуиз одной базы с COLLATE SQL_Latin1_General_Cp850_BINперенести в другую с COLLATE Cyrillic_General_CI_ASinsert into DB1..T1 (name)select name (здесь писал и COLLATE SQL_Latin1_General_Cp850_BIN и COLLATE Cyrillic_General_CI_AS) from DB2..T2дак он кракозябры передает...ХЕЛП !


Dantist

select T1.id from T1, T2where (T1.name COLLATE Cyrillic_General_CI_AS = T2.name COLLATE Cyrillic_General_CI_AS)


Dantist

нет так тоже не катит !как перенести данные из одной базы в другую если у этих баз разные колэйшены ?


Dantist

нет так тоже не катит !Может быть тогда объяснитесь что у вас не получается и какая ошибка при этом выдается ?


Dantist

в том то и дело что никакой ошибки нет, он просто не возврашает ни одной записи, хотя я сам добавил и в T1 и T2 name один и тот же...


Dantist

а пробелы лишние убирать пробовали?


Dantist

Можно поинтересоваться структурой таблиц?


Dantist

етсть таблица DB1..Т1 (id, name) c Cyrillic_General_CI_ASи таблица DB2..Т2(name) c SQL_Latin1_General_Cp850_BINи так
select DB1..T1.id from DB1..T1, DB2..T2
where (DB1..T1.name COLLATE Cyrillic_General_CI_AS = DB2..T2.name COLLATE Cyrillic_General_CI_AS)
и так
select DB1..T1.id 
from DB1..T1 inner join DB2..T2 on (DB1..T1.name=DB2..T2.name COLLATE SQL_Latin1_General_Cp850_BIN)
и разные вариацииничего не выходит...


Dantist

Интересует тип данных поля name.


Dantist

varchar (30)


Dantist

а так попробуйselect DB1..T1.id from DB1..T1, DB2..T2where (rtrim(DB1..T1.name) COLLATE Cyrillic_General_CI_AS = rtrim(DB2..T2.name) COLLATE Cyrillic_General_CI_AS)


Dantist

COLLATE Server_default


Dantist

ни как не выходит !
select a.[user_id] from reglament.dbo.[user] a, YUNG.dbo.doc b
where (ltrim(rtrim(b.[sign])) COLLATE SQL_Latin1_General_Cp850_BIN = ltrim(rtrim(a.display_name)) COLLATE SQL_Latin1_General_Cp850_BIN)
ни так:
select a.[user_id] from reglament.dbo.[user] a, YUNG.dbo.doc b
where (ltrim(rtrim(b.[sign])) COLLATE Cyrillic_General_CI_AS = ltrim(rtrim(a.display_name)) COLLATE Cyrillic_General_CI_AS)
Вообще понять ничего не могу!Скажите как мне из таблице с COLLATE SQL_Latin1_General_Cp850_BIN в таблицу с COLLATE Cyrillic_General_CI_AS перекинутьпробовал по всякому но он гад каракули передает


Dantist

Вот смотрите:
select [name] from T1
выдает:╬ ±¯þõÓÝÞÞ ´¯±‗¯ Ýݯ õÕÚ±‗Ô¾■¨ÕÚ Û¯ýÞ±±ÞÞ ´¯ ßÕþ¯´Ó±Ý¯±‗Þ ‗­¾õÓ╬ ÔÝÕ±ÕÝÞÞ ÞþýÕÝÕÝÞÚ Ô ´­ÞÛÓþ ╣ 114 ¯‗ 24.03.2000 Ò.╬ß ¯ÛÓþÓÝÞÞ ¶ÞÝÓݱ¯Ô¯Ú ´¯ý¯¨Þ╬ß ¯ÛÓþÓÝÞÞ ¶ÞÝÓݱ¯Ô¯Ú ´¯ý¯¨Þ


Dantist

Вот смотрите:
select [name] from T1
╬ ±¯þõÓÝÞÞ ´¯±‗¯ Ýݯ õÕÚ±‗Ô¾■¨ÕÚ Û¯ýÞ±±ÞÞ ´¯ ßÕþ¯´Ó±Ý¯±‗Þ ‗­¾õÓ╬ ÔÝÕ±ÕÝÞÞ ÞþýÕÝÕÝÞÚ Ô ´­ÞÛÓþ ╣ 114 ¯‗ 24.03.2000 Ò.╬ß ¯ÛÓþÓÝÞÞ ¶ÞÝÓݱ¯Ô¯Ú ´¯ý¯¨Þ╬ß ¯ÛÓþÓÝÞÞ ¶ÞÝÓݱ¯Ô¯Ú ´¯ý¯¨Þи
select [name] COLLATE SQL_Latin1_General_Cp850_BIN from T1
выдает╬ ±¯þõÓÝÞÞ ´¯±‗¯ Ýݯ õÕÚ±‗Ô¾■¨ÕÚ Û¯ýÞ±±ÞÞ ´¯ ßÕþ¯´Ó±Ý¯±‗Þ ‗­¾õÓ╬ ÔÝÕ±ÕÝÞÞ ÞþýÕÝÕÝÞÚ Ô ´­ÞÛÓþ ╣ 114 ¯‗ 24.03.2000 Ò.╬ß ¯ÛÓþÓÝÞÞ ¶ÞÝÓݱ¯Ô¯Ú ´¯ý¯¨Þ╬ß ¯ÛÓþÓÝÞÞ ¶ÞÝÓݱ¯Ô¯Ú ´¯ý¯¨Þи
select [name] COLLATE Cyrillic_General_CI_AS from T1
выдает + ±??oOY?? ??±?? YY? oOU±?O?¦?OU U?y?±±?? ?? ?O???O±Y?±?? ?­?oO+ OYO±OY?? ??yOYOY?U O ?­?UO? ¦ 114 ?? 24.03.2000 O.+? ?UO?OY?? ¶?YOY±?O?U ??y???+? ?UO?OY?? ¶?YOY±?O?U ??y???


Dantist

sp_help Т1 и sp_help t2 в студию, плз...


Dantist

T1
name	varchar	no	<b>50</b>,<b>00</b>	 	 	no	yes	no	SQL_Latin1_General_CP850_BIN
T2
nаме	varchar	no	<b>50</b>,<b>00</b>	 	 	yes	no	no	Cyrillic_General_CI_AS


Dantist

В nvarchar попробуй преобразовать


Dantist

не помогло...


Dantist

Вы шрифт какой используете для вывода результатов? Он держит кириллицу?Если посмотреть таблицы с помощью EM и там попробовать Ваши три запроса выполнить?


Dantist

Обясните мне тупому, разве 850 кодовая страница содержит кирилические символы. Что за инфа в этой таблицу ваще???


Dantist

Шрифт поддерживает !в этом поле содержатся названия написаные по русски.