我有一个表测试,其中1列作为数据类型,如ntext。
我正在写下面的查询:
when matched and TARGET.Module_ID<>SOURCE.Module_ID
THEN
UPDATE SET TARGET.Module_ID=SOURCE.Module_ID
但它给了我一个错误
The data types ntext and ntext are incompatible in the not equal to operator.
然后我将查询更改为
when matched and TARGET.convert(varchar(max),Module_ID) <> SOURCE.convert(varchar(max),Module_ID)
它给了我一个错误
Incorrect syntax near the keyword 'convert'.
查询有什么问题?
答案 0 :(得分:1)
您是否查看了CONVERT的文档? 你这样使用它:
convert(varchar(max), TARGET.Module_ID) <> convert(varchar(max), SOURCE.Module_ID)
所以你的陈述是:
WHEN matched and convert(varchar(max), TARGET.Module_ID) <> convert(varchar(max), SOURCE.Module_ID)
THEN
UPDATE SET TARGET.Module_ID=SOURCE.Module_ID
也是warning的一句话:
重要!将删除ntext,text和image数据类型 SQL Server的未来版本。避免在新的中使用这些数据类型 开发工作,并计划修改当前使用的应用程序 他们。请改用nvarchar(max),varchar(max)和varbinary(max)。
答案 1 :(得分:0)
另一种选择是使用CAST功能。
when matched and CAST(TARGET.Module_ID AS VARCHAR(MAX)) <> CAST(SOURCE.Module_ID AS VARCHAR(MAX))
您可以在此处阅读更多内容 - https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql