如何使用具有ntext值的另一列更新ntext datacolumn

时间:2012-03-28 08:41:43

标签: sql-server

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.

知道如何克服这个问题吗?

3 个答案:

答案 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比较