是否可以在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
答案 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。