Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сравнение строк [D5, MSSQL]


MakNik ©   (2005-04-26 12:56:00) 

Declare @ID_NextPeriod UniqueIdentifier Set @ID_NextPeriod='63ED4212-2EF0-4A03-9C81-0AEE80FB87A5'
Declare @Tmp TABLE(ID_Name nvarchar(255),Val nvarchar(255))
insert Into @Tmp
Select RegValue.Name,RegValue.Val from RegValue
Where RegValue.Val<>'' and SUBSTRING(RegValue.Name,1,2)='ID'

Update RegValue
Set Val='{'+CONVERT(nvarchar(38),CP.ID)+'}'
from @Tmp as Tmp1,RegValue, CodePay
Left Outer Join CodePay as Cp ON CP.Code=CodePay.Code and CP.ID_Period=@ID_NextPeriod
Where CodePay.ID=CONVERT(UniqueIdentifier,Tmp1.Val)
and Tmp1.ID_Name=RegValue.Name


RegValue:
ID
Name nvarchar(255)
Val nvarchar(255)

Подскажите, пожалуйста, почему один и тот же запрос на одном сервере работает, а на другом выдает ошибку:
"Server: Msg 446, Level 16, State 9, Line 12
Cannot resolve collation conflict for equal to operation."


MakNik   (2005-04-26 18:16:00) [1]

ОК, Спасибо... разобрался...
так тоже работает:
Declare @Tmp TABLE(ID_Name nvarchar(255) COLLATE Cyrillic_General_CI_AS,Val nvarchar(255) COLLATE Cyrillic_General_CI_AS)
:)


Nikolay M.   (2005-04-26 18:09:00) [2]

SELECT
 *
FROM
 T1 a
INNER JOIN T2 b ON a.F1 = b.F2 COLLATE Latin1_General_CI_AI


MakNik   (2005-04-26 18:02:00) [3]


> Попробовать выставить колейшен непосредственно в запросе
> у селектируемых таблиц.

...а пример можно?


Nikolay M.   (2005-04-26 15:30:00) [4]


> ... может в этом прикол?

Может.


> что делать?

Попробовать выставить колейшен непосредственно в запросе у селектируемых таблиц.


MakNik   (2005-04-26 15:21:00) [5]


> Колейшены баз на "работающем" и "неработающем" серверах
> какие?

Collation на обеих базах одинаковые (Cyrillic_General_CI_AS), а вот правда в свойствах самих серверов - разные: на "работающем" - Cyrillic_General_CI_AS, а на "неработающем" - Ukrainial_CI_AS.
... может в этом прикол? ... что делать?


Nikolay M.   (2005-04-26 14:59:00) [6]

Колейшены баз на "работающем" и "неработающем" серверах какие?


Johnmen   (2005-04-26 14:33:00) [7]

В приведенном огрызке (:)) использование псевдонима не видно...


MakNik   (2005-04-26 14:20:00) [8]

... заменил строки
Update RegValue
Set Val='{'+CONVERT(nvarchar(38),CP.ID)+'}'

на Select *
, использовал псевдонимы... а ошибка осталась...


Johnmen   (2005-04-26 13:31:00) [9]

Не может сопоставить поле Name таблицы RegValue, т.е. к какой таблице относится упоминание RegValue.Name - к той, которая апдейт, или к той, из которой селект.

Для себя, и тебе рекомендую, я жестко решил, что ВСЕГДАуказывать псевдонимы. Это однозначно поможет абстрагироваться от логики работы анализатора SQL выражения в части сопоставления имен таблиц. А логика эта у разных серверов разная...


Наверх

Титульная страница Поиск, карта сайта Написать письмо