将nvarchar从SQL Server 2014转换为bigint



我想在sqitable中将sqi_mainmiddleman24复制到sqi_test

  • sqi_test类型为bigint
  • sqi_main类型为nvarchar(20)

我在SQL Server 2014:中使用此命令

INSERT INTO sqitable(sqi_test) 
    SELECT sqi_main  
    FROM Middleman24

sqi_main内容为

2
3
1
-5
30
-1
50

但我得到了这个错误:

将数据类型nvarchar转换为bigint时出错。

我尝试过其他解决方案,如

INSERT INTO sqitable(sqi_test) 
    SELECT sqi_main  
    FROM Middleman24 
    WHERE ISNUMERIC(sqi) = 1 
      AND sqi <> ''

但我又犯了同样的错误。

有些数据无法转换为bigint,正如一位评论者所提到的,ISNUMERIC不是一个完美的解决方案。

由于您使用的是SQL 2014,请使用TRY_CONVERT()函数(也可以使用TRY_PARSE())。谷歌或搜索MSDN以获取所有详细信息。

如果数据是干净的,就可以使用CAST:

SELECT CAST(sqi_main as bigint) FROM Middleman24;

否则,请使用TRY_RSE:

SELECT TRY_PARSE(sqi_main as bigint) FROM Middleman24;

最新更新