【发布时间】:2010-10-18 05:57:36
【问题描述】:
如何在 SQL Server 2005 上使用 SQL 查询将字符串转换为整数?
【问题讨论】:
标签: sql sql-server-2005
如何在 SQL Server 2005 上使用 SQL 查询将字符串转换为整数?
【问题讨论】:
标签: sql sql-server-2005
你可以使用CAST or 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.
要解决这个问题,只需执行以下两次转换:
字符串 -> 数字 -> 整数
或
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)
【讨论】:
试试这个,它在雅典娜对我有用:
cast(MyVarcharCol as integer)
【讨论】: