我想在sqitable
中将sqi_main
从middleman24
复制到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;