Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server 2014中将varchar(10)转换为int_Sql_Sql Server_Tsql_Sql Server 2014 - Fatal编程技术网

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

在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

在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(), 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吗?