我在SQL服务器上工作。我有一些像130-0029
的数字。我需要在-
分隔符之后得到整数。所以在这个例子中我需要返回29
。以下是我对此的情况,
130-00000029
或130-0029
不同。 0
,否则获取29
之类的实际数字。请告知/建议我。
答案 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中查看此内容。