1

我正在使用跟随函数从字符串中获取数字。

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。

我的问题是我怎样才能得到与“-”分开的最后一位结束数字

4

2 回答 2

1

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

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

select  substr(@string, @pos+1, @len(@str))

编辑:可能是@pos-1......我在这台计算机上没有 sql 服务器,所以我无法测试,而且 mysql 的功能不同,我不确定我是否正确翻译了它。请试试这个,让我知道。

于 2013-11-09T19:17:57.727 回答
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
于 2013-11-09T19:44:29.713 回答