【问题标题】:Tsql implicitly trying to convert a zip-code string to an int when insertingTsql 在插入时隐式尝试将邮政编码字符串转换为 int
【发布时间】:2017-04-06 20:57:05
【问题描述】:

我确定有人询问并回答了这个问题,但我找不到。我是 TSQL 的新手。我正在尝试将几个邮政编码记录(字符串)“插入”到我之前构建的表格中。该列设置为 varchar(255)。不知道其他 245 个字符是干什么用的……

当我尝试插入值时,SqlServer 尝试将文本字符串隐式转换为整数,但失败了。

INSERT INTO db.table (city,zip)
    SELECT 'New York','12345-1234' UNION ALL
    SELECT 'Pittsburgh','98765-4321';

它返回“Msg 245, Level 16, State 1, Line 4 将 varchar 值 '12345-1234' 转换为数据类型 int 时转换失败。"

任何帮助将不胜感激。

好的...回到办公室。这是我要插入的 zip 列的屏幕截图。它是一个 varchar,上面的代码正确地代表了我正在尝试做的事情。是“全联盟”吗?

Zip column

【问题讨论】:

  • 根据我的经验,SQL Server 仅在列需要时尝试在数据类型之间进行转换。您列出的查询在语法上不正确,不会运行。您能否提供您尝试运行的实际查询?
  • 可以在 dba.stackexchange.com 中询问
  • 也许该表旨在存储由五位整数组成的区域改进计划代码。 ZIP+4 编码自 1983 年以来才出现,因此可能尚未适应。

标签: sql tsql type-conversion varchar implicit


【解决方案1】:

此值不是整数,您插入的字段必须是精度较低的字符串,必须是您可以接收的最长的字符串。

【讨论】:

    【解决方案2】:

    没关系。我想到了。在我插入的大型数据集中,有一些草率输入的数据被提取为 int。然后,TSQL 尝试转换为层次结构中较高的数据类型并中断插入。

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 2023-03-24
      相关资源
      最近更新 更多