到目前为止,这是我想出的,但出现语法错误
update t_Provider set(CAST(f_Postnr as int)) = '66886' where f_Name= 'Test1'
到目前为止,这是我想出的,但出现语法错误
update t_Provider set(CAST(f_Postnr as int)) = '66886' where f_Name= 'Test1'
根据您的问题,我假设列f_Postnr
是NVARCHAR(4)
.
您不能将字符长度大于 4 的数据插入此列。
任何解决方案都需要您编辑列长度。
请查看MSDN中更新的语法..
分配的左侧必须是已知的内存位置(变量或列/字段)。您正在做的是尝试将(未知位置)设置和表达为常量并通过 where 子句进行过滤。
使用此代码做你想做的事。
-- Code from user
update t_Provider
set f_Postnr = 66886
where f_Name= 'Test1'
为什么不在更新中传递常量而不将其声明为字符串''?这就是上面的代码片段所做的。这假设 f_Postnr 是一个可以轻松处理 66K 数字(域约束)的 INT。
如果使用 '66886',如果没有错误,SQL Server 会将字符串隐式转换为整数。
这是MSDN关于隐式转换矩阵的巨大图表。
我希望这对您未来的 TSQL 工作有所帮助!
怎么用...
UPDATE t_Provider
SET f_Postnr = CAST('66886' AS INT)
WHERE f_Name = 'Test1'