【问题标题】:Joining number with a slash SQL用斜杠连接数字 SQL
【发布时间】:2012-12-03 11:41:29
【问题描述】:

得到一个查询,当我尝试运行它时,它在将 nvarchar 值 '0003/' 转换为数据类型 int 时返回转换失败。

查询是

SELECT

name,
date,
CAST(('0' + Location + '/' + ID) AS nvarchar(50)) AS [UniqNumber]

FROM
Table

在将 nvarchar 值 '0003/' 转换为数据类型 int 时返回转换失败。位置和 ID 都是整数。

【问题讨论】:

  • 您正在将 varchar 转换为 int。只要你没有那些特殊字符/字符串就可以了……我收回我的评论。你为什么不直接replace

标签: sql sql-server-2008 tsql


【解决方案1】:

您需要转换输入。

'0' + CAST(Location AS VARCHAR(20)) + '/' + CAST(ID AS VARCHAR(20))

int 的数据类型优先级高于字符串数据类型。如果您执行string + int,它将尝试将字符串转换为整数并添加它,而不是将整数转换为字符串并连接它。

【讨论】:

  • OP 想要得到他的最终输出为int,不是吗? :)
  • @bonCodigo - 我怀疑这种解释。如果这是他们想要的,他们正在连接 / 似乎很奇怪。
  • 谢谢。我以为他想用 0 替换斜线,同时将两个变量连接在一起作为int。这就是为什么我用 0 替换 Location 中的 / 并将其连接到 ID 然后 CAST 到 int 的原因。那我的第一印象就错了
【解决方案2】:

如果您想将nvarchar 转换为int,请尝试此操作

CAST(REPLACE(Location,'/',0) AS nvarchar(50)) + CAST(ID as nvarchar(50)) AS [UniqNumber]

输出:

0030

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多