从 SQL Server 2014 将 nvarchar 转换为 bigint

Convert nvarchar to bigint from SQL Server 2014

我想将 sqi_mainmiddleman24 复制到 sqitable 中的 sqi_test

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

INSERT INTO sqitable(sqi_test) 
    SELECT sqi_main  
    FROM Middleman24

sqi_main内容为

2
3
1
-5
30
-1
50

但是我得到这个错误:

Error converting data type nvarchar to 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())。 Google 或搜索 MSDN 以获取所有详细信息。

如果数据干净,您可以只使用 CAST:

SELECT CAST(sqi_main as bigint) FROM Middleman24;

否则,使用TRY_PARSE:

SELECT TRY_PARSE(sqi_main as bigint) FROM Middleman24;