2014-01-30 100 views
1

需要關於sql查詢幫助以查找位置。例如,如果我有一個字符串「111444411114444411111」 我需要的4例如用於上面的字符串我需要的4志願服務崗位從到的位置:作爲 4至7, 12至16用於在字符串中查找位置的SQL查詢

+0

要做到這一點是在SQL? – Nanda

+0

您正在使用哪種RDBMS? –

+0

我正在使用SQL 2008 –

回答

0

請嘗試:

DECLARE @var NVARCHAR(MAX)='111444411114444411111' 

;WITH T AS(
    SELECT LEFT(@var, 1) Cha, 1 pos, 1 Ind 
    UNION ALL 
    SELECT SUBSTRING(@var, Ind+1, 1), 
     CASE WHEN Cha=SUBSTRING(@var, Ind+1, 1) THEN pos ELSE pos+1 END, 
     Ind+1 
    FROM T 
    WHERE Ind+1<=LEN(@var) 
) 
SELECT CAST(MIN(Ind) AS NVARCHAR)+' to '+CAST(MAX(Ind) AS NVARCHAR) Positions 
FROM T WHERE Cha='4' 
GROUP BY pos 
+0

謝謝..它解決了它 –

0

試試看看這個代碼。

參見:MSDN - SQL Server - CHARINDEX

declare @str varchar(200); 
set @str = '111444411114444411111' 
declare @ind int; 
set @ind = 1; 
declare @len int; 
set @len = len(@str); 


while (@ind <= @len and @ind >= 1) 
begin 
    set @ind = charindex('4', @str, @ind); 
    if (@ind <= 0) break; 
    print @ind; 
    set @ind = @ind + 1; 
end