0

到目前为止,这是我想出的,但出现语法错误

   update t_Provider set(CAST(f_Postnr as int)) = '66886' where f_Name= 'Test1'
4

3 回答 3

0

根据您的问题,我假设列f_PostnrNVARCHAR(4).

您不能将字符长度大于 4 的数据插入此列。

任何解决方案都需要您编辑列长度。

于 2013-09-19T18:34:29.723 回答
0

请查看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 工作有所帮助!

于 2013-09-19T19:26:52.693 回答
0

怎么用...

UPDATE t_Provider
SET f_Postnr = CAST('66886' AS INT)
WHERE f_Name = 'Test1'
于 2015-09-10T09:25:14.923 回答