SQL如何获取结束编号

时间:2013-11-09 19:04:50

标签: sql sql-server string

我使用跟随功能从字符串中获取数字。

CREATE FUNCTION dbo.udf_GetNumeric
(@strAlphaNumeric VARCHAR(256))
RETURNS VARCHAR(256)
AS
BEGIN
    DECLARE @intAlpha INT
    SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
    BEGIN
        WHILE @intAlpha > 0
        BEGIN
            SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
            SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
        END
    END
    RETURN ISNULL(@strAlphaNumeric,0)
END
GO

在大多数情况下,使用它有帮助。

但不是全部。

字符串看起来像这样:

string-goes-here-123450
string-2-goes-here-1233

在第一种情况下,输出是正确的,即123450,但在第二种情况下,输出是21233。

我的问题是我怎样才能得到与“ - ”

分开的结尾数字的最后一位

2 个答案:

答案 0 :(得分:1)

试试这个...首先找到-的最后一次出现,然后取出字符串的结尾

SET @pos = LEN(@string) - CHARINDEX('-',REVERSE(@string))

select  substr(@string, @pos+1, @len(@str))
编辑:它可能是@pos-1 ...我在这台计算机上没有sql server所以我无法测试和mysql的功能不同,我不确定我是否正确翻译。请试一试,告诉我。

答案 1 :(得分:1)

create table #test(
    input varchar(50)
)
go
insert into #test values
    ('string-goes-here-123450'),
    ('string-2-goes-here-1233')
go
select t.input, right(t.input,charindex('-',reverse(t.input))-1) as output
from #test t

生产: -

input                    output
string-goes-here-123450  123450
string-2-goes-here-1233  1233