2016-04-28 11 views
1

文字列から36/5のような番号を選択する必要がありますが、結果は得られません。 私は数36数字の行からエントリを選択する方法

コードを選択することができます:あなたの文字列は常にちょうどあなたの第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; 

答えて

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

常に4文字を取得する場合は、別の方法です。それ以外の場合は、必要に応じて調整することができます。これは、限られた文字数の問題を解決することがあり

EDITが...これはあなたの値の間常にある場合に動作します

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 =" と "&モード"

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; 
+0

で数値カウントが増加した場合、コードはサポートされません。 – Arulkumar

+0

"...あなたはいつも4文字を検索します。" – BJones

+0

Atoadaso、非常に良いと答えた、ありがとう – VasyPupkin

関連する問題