在SQL

时间:2015-11-05 17:41:16

标签: sql-server

我在SQL服务器上工作。我有一些像130-0029的数字。我需要在-分隔符之后得到整数。所以在这个例子中我需要返回29。以下是我对此的情况,

  • 模式可能与130-00000029130-0029不同。
  • 如果全部为0,则打印0,否则获取29之类的实际数字。

请告知/建议我。

4 个答案:

答案 0 :(得分:2)

以下是一个例子:

declare @s varchar(100) = '130-0029'
select cast(substring(@s, patindex('%[-]%', @s) + 1, len(@s)) as int)

如果数字超出了ineteger类型,您可能需要转换为某个数字。

答案 1 :(得分:0)

试试这个:

DECLARE @num varchar(50) = '130-0029'
SELECT CAST(SUBSTRING(@num, CHARINDEX('-', @num) + 1, LEN(@num)) AS INT)

这是fiddle

答案 2 :(得分:0)

如果缺少-,这也有效。但如果后面的内容不是数字,则会出错。

declare @string as varchar(100)
set @string = '130-0029'

select convert(int,Right(@string, LEN(@string)-CHARINDEX('-', @string)))

答案 3 :(得分:0)

可能与其他答案没那么不同,但这也适用于STUFF:

DECLARE @String VARCHAR(10) = '130-0029';

SELECT CONVERT(INT, STUFF(@String, 1, CHARINDEX('-', @String), ''));

Query Stack Exchange中查看此内容。