我需要从字符串中选择36/5
之类的数字,但不会得到结果。
我只能选择36号。
代码:
DECLARE @s nvarchar(255);
SET @s = 'http://kbyte.ru/ru/Programming/Sources.aspx?id=36/5&mode=show'
-- берем переднюю часть строки, начиная с числа
SELECT @s = SUBSTRING(@s, PATINDEX('%[0-9]%', @s), LEN(@s));
-- отсекаем хвост до числа
SELECT @s = SUBSTRING(@s, 0, PATINDEX('%[^0-9]%', @s));
-- выводим
SELECT @s;
答案 0 :(得分:2)
如果您的字符串始终采用该格式,只需将 / 添加到您的第二个模式索引中。
DECLARE @s nvarchar(255);
SET @s = 'http://kbyte.ru/ru/Programming/Sources.aspx?id=36/5&mode=show'
SELECT @s = SUBSTRING(@s, PATINDEX('%[0-9]%', @s), LEN(@s));
SELECT @s = SUBSTRING(@s, 0, PATINDEX('%[^0-9/]%', @s));
SELECT @s;
答案 1 :(得分:1)
如果你总是要检索4个字符,那么另一种选择。否则你可以根据需要调整它。
DECLARE @s nvarchar(255);
SET @s = 'http://kbyte.ru/ru/Programming/Sources.aspx?id=36/5&mode=show'
SELECT @s= SUBSTRING(@s,(CHARINDEX('id=',@s)+3),4)
SELECT @s;
修改强>
这可以解决字符数量有限的问题......如果您的值始终介于“id =”和“& mode”之间,这将有效
DECLARE @s nvarchar(255);
DECLARE @int INT
SET @s = 'http://kbyte.ru/ru/Programming/Sources.aspx?id=36/5&mode=show'
SELECT @int = CHARINDEX('&mode',@s) - (CHARINDEX('id=',@s)+3)
SELECT @s= SUBSTRING(@s,(CHARINDEX('id=',@s)+3),@int)
SELECT @s;