【发布时间】:2020-10-13 13:08:49
【问题描述】:
当我尝试更新表中的值时,我在 Azure SQL 数据库中遇到以下错误:
将 ****** 值 '******' 转换为数据类型 ****** 时转换失败。
我做了一些研究,发现另一个人有同样的问题并发布了问题(来源here) - 但不知何故,它与蒙面列有关,这不是我的情况。
在我的情况下,我正在尝试使用相同数据类型的值更新 nvarchar 列(具体来说 - Code),但我遇到了这个奇妙的错误。我的数据表定义是:
CREATE TABLE [dbo].[ESFIZStepWF](
[Code] [nvarchar](20) NOT NULL,
[Description] [nvarchar](100) NULL,
[AlternativeDescription] [nvarchar](100) NULL,
[Inactive] [tinyint] NOT NULL,
[TimeSeries] [int] NOT NULL,
[StepCode] [nvarchar](100) NULL,
[CountryID] [nvarchar](100) NOT NULL,
[WEB] [tinyint] NOT NULL,
[fStepStateWFCode] [nvarchar](20) NULL,
CONSTRAINT [PK_ESFIZStepWF] PRIMARY KEY CLUSTERED
(
[Code] ASC,
[CountryID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
更新声明
UPDATE ESFIZStepWF
SET Code=366
WHERE Code=314
AND CountryID='BG'
还有其他人在 Azure SQL 中遇到过这个问题吗?谢谢
【问题讨论】:
-
UPDATE触发器是一种可能的解释。错误消息中to data type ******部分的数据类型是什么? -
@Zhorov 它们的字面意思是数据类型和值被星号掩盖。不过关于触发器的好点!
-
@cdrr,现在错误解决了吗?你有什么进展吗?
-
@Zhorov - 这与任何更新触发器无关。目标数据类型是
nvarchar(20)。 -
@LeonYue - 我通过在值中添加单引号来重写那段动态 SQL 来解决。无论如何,考虑到两周前相同的前一段代码在同一个数据库上运行,我不知道为什么这样做。很奇怪。
标签: sql-server type-conversion azure-sql-database