26

我有一个字段,VARCHAR(6)我正在尝试将其插入到另一个类型bigint 的表中,这给了我一个错误

(从数据类型 varchar 转换为 bigint 时出错

这就是我在做什么

CONVERT(bigint, seconds) as seconds

有人可以帮忙解决这个问题吗?

4

3 回答 3

43

这是答案

(CASE
  WHEN
    (isnumeric(ts.TimeInSeconds) = 1) 
  THEN
    CAST(ts.TimeInSeconds AS bigint)
  ELSE
    0
  END) AS seconds
于 2013-02-01T00:09:01.393 回答
4

另一种方法是执行以下操作:

SELECT
   CAST(P0.seconds as bigint) as seconds
FROM
   (
   SELECT
      seconds
   FROM
      TableName
   WHERE
      ISNUMERIC(seconds) = 1
   ) P0
于 2013-02-01T06:04:09.060 回答
3

我认为您的代码是正确的。如果您运行以下代码,它将转换被视为 varchar 的字符串 '60' 并返回整数 60,如果在第二个中存在包含字符串的整数,则它可以工作。

select CONVERT(bigint,'60') as seconds 

它返回

60
于 2013-02-01T06:16:07.467 回答