从 SQL Server 2014 将 nvarchar 转换为 bigint
Convert nvarchar to bigint from SQL Server 2014
我想将 sqi_main
从 middleman24
复制到 sqitable
中的 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
但是我得到这个错误:
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;
我想将 sqi_main
从 middleman24
复制到 sqitable
中的 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
但是我得到这个错误:
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;