2012-03-28 4 views
0
TBL1 

ID Value 
1 A 
2 B 
3 C 

TBL2 

ID Value 
1  
2  
3  

UPDATE TBL1 
SET TBL1.ID= TBL2.ID 
FROM 
TBL1 t1 
INNER JOIN TBL2 t2 
ON t1.Value= t2.Value 
WHERE t2.ID like '1' 

ID - nvarchar(200) 
Value - ntext 

Моя цель состоит в том, чтобы заполнить TBL2 от TBL1Как обновить NTEXT DataColumn с другой столбец с NTEXT значением

Я не могу изменить типы данных, как база данных не моя база данных.

Когда я написал вышеуказанный контент, все должно быть в порядке.

Но у меня есть это сообщение об ошибке.

Msg 402, Level 16, State 1, Line 16 
The data types ntext and ntext are incompatible in the equal to operator. 

Любая идея, как преодолеть это?

ответ

0

Вы намерены заполнить TBL2, но в вашем заполнении tabl1 в вашем примере кода.

И вы хотите установить ID? Стоимость?

попробуйте это?

UPDATE t2 
SET t2.VALUE = t1.VALUE 
FROM tbl2 t2 
     LEFT JOIN tbl1 t1 
     ON t1.id = t2.id 
0

Вы можете попробовать что-то вроде этого:

UPDATE TBL1 
SET TBL1.ID= TBL2.ID 
FROM 
TBL1 t1 
INNER JOIN TBL2 t2 
ON CAST(t1.Value AS NVARCHAR(MAX)) = CAST(t2.Value AS NVARCHAR(MAX)) 
WHERE t2.ID like '1' 

По ошибке, SQL Server не может сравнить столбцы NTEXT, но, поворачивая их в NVARCHAR (MAX) сравнение может быть выполнено.

В несвязанной заметке LIKE в предложении WHERE будет рассматриваться как =, поскольку в строке сравнения нет шаблона.

0

Это будет Link объяснит текст и сравнение ntext в деталях

Смежные вопросы