在SQL Server 2014中将varchar(10)转换为int
在SQL Server 2014中是否可以将在SQL Server 2014中将varchar(10)转换为int,sql,sql-server,tsql,sql-server-2014,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 你可以试试: SELECT TRY_CAST(RIGHT(CAST(convert(VARBINARY, NEWID
varchar(10)
转换为int
我尝试了以下代码,但出现了转换错误
Declare @Random varchar(10)
set @Random = CONVERT(varchar, right(newid(),10))
Declare @rand int = cast(@Random as int)
select @rand
你可以试试:
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;
在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)
我尝试了以下代码,但出现了转换错误
Declare @Random varchar(10)
set @Random = CONVERT(varchar, right(newid(),10))
Declare @rand int = cast(@Random as int)
select @rand
问题中的代码不是测试是否可以将字符串转换为整数,而是测试是否可以转换任何随机字符串。随机字符串包含无法转换为整数的alpha字符,因此会出现转换错误。但是,即使您将随机字符串限制为数字,在溢出
int
之前,您仍然只能转换最大值为2147483647
的数字字符串。我不认为生成(并非如此)符合此标准的随机字符串会证明什么。您的问题的简单答案是肯定的,您可以将字符串转换为int,只要字符串满足int的要求。RIGHT(NEWID(),10)
只是一个整数。您可以将十六进制字符串转换为整数,但此时您最好解释一下为什么需要它,因为对于任何想要解决的问题(如CRYPT\u GEN\u RANDOM
),几乎肯定有更好的解决方案。但是newid()
为您提供了带有字母数字的guid,为什么要将其转换为int?在您尝试转换为int之前,将这一行添加到您的代码中:SELECT@Random
并查看您试图转换的内容。NEWID
生成一个字符,而不仅仅是数字。我正在尝试生成一个随机varchar(10)并将其转换为int,SELECT@Random打印类似于:“9B5B89F3”的内容。您能将“ABC”转换为int吗?