2014-02-12 46 views
1

如何返回串B用正重複爲每個字符變量在串A其中變量是炭的字符串中SQL:如何返回串B具有n重複變量字符串中的A中的每個字符,其中變量是炭的字符串中的位置

對於實施例位置:

  • 如果我的字符串A爲」 SQL
  • 我所需要的答案是」 S1Q2L3 「爲串B
  • 如果我的字符串A是」 字符串」
  • 然後我需要的答案是 「S1t2r3i4n5g6」 爲串B

所以該變量變化對於每個重複

我需要這個在Sql計算。

由於提前

+0

你可以試試這個是在你的代碼比sql –

+0

「我需要在Sql中進行計算。」 - 這聽起來像是你已經決定解決問題的一些問題,其中第一部分就是你在這裏問的問題,第二部分是另一個計算。我不禁想知道,如果您告訴我們整體問題是什麼,我們是否會做得更好,因爲我無法想到很多情況下,問題的正確解決方案(部分)是您所問的這裏。 –

+0

您正在使用哪些DBMS? – Dibstar

回答

1

試試這個..

DECLARE @STR VARCHAR(10)='HELLO', 
     @Index int=1, 
     @TotalLength int, 
     @NewStr varchar(20)=''; 

SET @TotalLength = LEN(@STR); 

WHILE (@Index < @TotalLength+1) 
BEGIN 
    SET @NewStr= @NewStr + (SUBSTRING(@STR,@Index,1)+ CAST(@Index as varchar(2))); 
    SET @[email protected]+1; 
END 

SELECT @NewStr; 
+0

謝謝,你幫了我很多男人,這是我想要的,再次感謝 –

1

對於Oracle(如DMBS不詳):

SELECT 
LISTAGG(to_char(strings),'') WITHIN GROUP (ORDER BY rowno) FROM 
(
SELECT REGEXP_SUBSTR(regexp_replace('STRINGABCXYZ', '(.)', '\1,'), '[^,]+', 1, lvl) 
    || row_number() OVER (ORDER BY NULL) as strings 
,row_number() OVER (ORDER BY NULL) AS rowno  
FROM DUAL, 
(SELECT LEVEL lvl 
,regexp_replace('STRINGABCXYZ', '(.)', '\1,') as text 
FROM DUAL 
CONNECT BY LEVEL <= LENGTH(regexp_replace('STRINGABCXYZ', '(.)', '\1,')) 
    - LENGTH(REPLACE(regexp_replace('STRINGABCXYZ', '(.)', '\1,'),','))) 
) innerquery 
+0

謝謝.......... ............ –

相關問題