1

follow 関数を使用して、文字列から数値を取得していました。

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 でしたが、2 番目のケースでは、出力は 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 に答える