SQL,如何将VARCHAR转换为bigint?

Jay*_*len 19 sql sql-server

我有一个字段,VARCHAR(6)我试图将其插入另一个类型的表,bigint 它给我一个错误

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

这就是我在做的事情

CONVERT(bigint, seconds) as seconds
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助解决这个问题吗?

Jay*_*len 28

这就是答案

(CASE
  WHEN
    (isnumeric(ts.TimeInSeconds) = 1) 
  THEN
    CAST(ts.TimeInSeconds AS bigint)
  ELSE
    0
  END) AS seconds
Run Code Online (Sandbox Code Playgroud)

  • 可能想要编辑这个是正确的,因为`isnumiric`将不存在(检查拼写).此外,即使`CONVERT()`(和`ISNUMERIC()`)在您的机器上工作,您也将您的问题标记为'sql',这是一个_language_ - 您的机器具有特定的_implementation_(SQL Server).标准是`CAST(... as BIGINT)` - 对于未来的观众来说,最好用相关的RDBMS标记你的问题,或者写一个'标准'版本. (3认同)

小智 8

另一种选择是执行以下操作:

SELECT
   CAST(P0.seconds as bigint) as seconds
FROM
   (
   SELECT
      seconds
   FROM
      TableName
   WHERE
      ISNUMERIC(seconds) = 1
   ) P0
Run Code Online (Sandbox Code Playgroud)