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
我无法更改数据类型,因为数据库不是我的数据库。
当我写上述内容时,一切都应该没问题。
但是我有这个错误信息。
Msg 402, Level 16, State 1, Line 16
The data types ntext and ntext are incompatible in the equal to operator.
知道如何克服这个问题吗?
答案 0 :(得分:0)
你的目的是填写TBL2,但在你的示例代码中填写了tabl1。
你想设置ID吗?值?
试试这个吗?
UPDATE t2
SET t2.VALUE = t1.VALUE
FROM tbl2 t2
LEFT JOIN tbl1 t1
ON t1.id = t2.id
答案 1 :(得分: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),可以执行比较。
在一个不相关的注释中,WHERE子句中的LIKE将被视为=,因为比较字符串中没有通配符。
答案 2 :(得分:0)
这将Link将详细解释文本和ntext比较