我使用跟随功能从字符串中获取数字。
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。
我的问题是我怎样才能得到与“ - ”
分开的结尾数字的最后一位答案 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