如何在SQL Server 2005上使用SQL查询将字符串转换为整数?
如何在SQL Server 2005上使用SQL查询将字符串转换为整数?
Answers:
您可以使用CAST或CONVERT:
SELECT CAST(MyVarcharCol AS INT) FROM Table
SELECT CONVERT(INT, MyVarcharCol) FROM Table
select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
IsNumeric()
会产生一些错误的结果。它将为字符串“-。”返回TRUE,当您尝试将其强制转换为数字时仍会导致错误。
还应注意,从数字字符串(即'56.72'
INT)转换时,可能会遇到SQL错误。
Conversion failed when converting the varchar value '56.72' to data type int.
要解决此问题,只需执行两次转换,如下所示:
STRING->数值-> INT
要么
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
将数据从TableA复制到TableB时,转换是隐式的,因此您不需要第二次转换(如果您愿意舍入到最接近的INT):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
从SQL Server 2012开始,您可以使用TRY_PARSE或TRY_CONVERT。
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)