在SQL Server 2014中将varchar(10)转换为int

时间:2017-09-27 13:55:33

标签: sql sql-server tsql sql-server-2014

是否可以在SQL Server 2014中将varchar(10)转换为int

我尝试了以下代码,但收到了转换错误

Declare @Random varchar(10)
set @Random = CONVERT(varchar, right(newid(),10))
Declare @rand int = cast(@Random as int)
select @rand 

2 个答案:

答案 0 :(得分:0)

你可以尝试:

SELECT TRY_CAST(RIGHT(CAST(convert(VARBINARY, NEWID(), 1) AS BIGINT),10) AS INT);

<强> Rextester Demo

或者如果你只使用9个数字炎症:

SELECT RIGHT(CAST(convert(VARBINARY, NEWID(), 1) AS BIGINT),9) + 0;

答案 1 :(得分:0)

  

是否可以在SQL Server 2012下将varchar(10)转换为int?

是的,如果varchar(10)字符串都是数字字符且字符串在int的范围内:

-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)

换句话说,这将有效:

select cast('2147483647' as int)

这不会:

select cast('2147483648' as int)
  

我尝试了以下代码,但收到了转换错误

您的问题中的代码不测试您是否可以将字符串转换为整数,它正在测试是否可以转换任意随机字符串。您的随机字符串包含无法转换为整数的字母字符,因此您会收到转换错误。但即使您将随机字符串限制为数字,在溢出2147483647之前,您仍然只能将数字字符串转换为int。我不认为生成(不那么)符合此标准的随机字符串将证明很多。您的问题的简单答案是肯定的,只要字符串符合int的要求,您就可以将字符串转换为int。