如何将字符串'1234-2345'转换为整数?

时间:2015-05-15 08:38:17

标签: sql sql-server database sql-server-2008-r2 type-conversion

如何将字符串转换为整数?

DECLARE @string NVARCHAR(30)='1234-2345'

如何将@string转换为整数类型?

6 个答案:

答案 0 :(得分:1)

您可以删除破折号并将结果转换为整数。 SELECT CAST(REPLACE('1234-2345','-','') as int)

答案 1 :(得分:1)

如果我理解你,你需要:

DECLARE @Result INT
DECLARE @string NVARCHAR(30)='1234-2345'
SELECT @Result = CONVERT(INT, REPLACE(@string, '-', ''))

SELECT @Result --Your desired result

如果您想要表达式的结果:

DECLARE @Result INT
DECLARE @string NVARCHAR(30)='1234-2345'

SELECT  @Result = CAST(LEFT(@string, CHARINDEX('-', @string) - 1) AS INT) -
                  CAST(RIGHT(@string, CHARINDEX('-', @string) - 1) AS INT)

SELECT @Result --Your desired result

答案 2 :(得分:1)

如果你的意思是1234 减去 2345,那么

SELECT CAST((1234-2345) AS INT)
SELECT CAST((@string) AS INT)

如果意味着删除-符号,那么

SELECT CAST(REPLACE('1234-2345','-','') as int)
SELECT CAST(REPLACE(@string,'-','') as int)

答案 3 :(得分:1)

如果你只想从字符串中删除' - ',那么你可以使用replace函数 并将其转换为int类型。  如下:

DECLARE @string NVARCHAR(30)='1234-2345'

SELECT CAST(REPLACE('1234-2345','-','') as int)

答案 4 :(得分:1)

根据您的上一条评论:

  

我需要1234-2345,其中 - 是一个符号

这是不可能的。整数数据类型不能包含任何符号字符。

答案 5 :(得分:0)

一些开箱即用的想法。现在字符串成为一个数学问题,结果转换为int。

DECLARE 
 @STR NVARCHAR(50) = N'12345-235',
 @SQL NVARCHAR(MAX) = '',
 @PRAMS NVARCHAR(MAX) = N'@RETURN AS INT OUTPUT'

SET @SQL = N'SELECT @RETURN = CAST((' + @STR + N') AS INT)'

EXEC SP_EXECUTESQL @SQL , @PRAMS, @RETURN = @RETURNED OUTPUT

SELECT @RETURNED