是否可以在SQL Server 2014中将varchar(10)
转换为int
?在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
是否可以在SQL Server 2014中将varchar(10)
转换为int
?在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
是否可以在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)
我尝试下面的代码,但我得到一个转换错误
在你的问题中的代码是不是测试你是否可以字符串转换为整数,它正在测试是否任何随机字符串可以转换。您的随机字符串包含无法转换为整数的字母字符,因此您会收到转换错误。但即使将随机字符串限制为数字,在溢出int
之前,仍然只能将数字字符串转换为2147483647
。我不认为生成符合这个标准的(不那么)随机字符串将证明很多。对你的问题的简单回答是,只要字符串符合int的要求,就可以将字符串转换为int。
你可以尝试:
SELECT TRY_CAST(RIGHT(CAST(convert(VARBINARY, NEWID(), 1) AS BIGINT),10) AS INT);
或者,如果你只使用9个digitis:
SELECT RIGHT(CAST(convert(VARBINARY, NEWID(), 1) AS BIGINT),9) + 0;
'RIGHT(NEWID(),10)'只是一个整数,由最高巧合。你*可以*将hexstring转换为一个整数,但此时你最好解释为什么你想要它,因为对于任何想要解决的问题(比如'CRYPT_GEN_RANDOM'),几乎肯定会有更好的解决方案。 –
但'newid()'给你带有alpha数字的guid,为什么会转换为int?在尝试转换为int之前,将此行添加到您的代码中:'SELECT @ Random'并查看您要转换的内容。 – Tanner
'NEWID'生成一个字符,不仅是数字。 – Sami