【问题标题】:Azure SQL - failed converting the ****** value '******' to data type ******Azure SQL - 将 ****** 值“******”转换为数据类型 ****** 失败
【发布时间】: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


【解决方案1】:

恭喜错误现在得到解决:

  • “我通过重写那条动态 SQL 来解决 值的引号。"

有时我们可能找不到根本原因,但我们很高兴它最终得到了解决。

我发布它,这可能对其他社区成员有益。如果有人可以提供更多帮助,我们仍然非常感谢您。

【讨论】:

  • OP 已澄清,真正的更新是在 Code 的新/旧值周围加上引号。
猜你喜欢
  • 2018-07-13
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多