![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сравнение строк [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 выражения в части сопоставления имен таблиц. А логика эта у разных серверов разная...