2011-01-31 17 views
0

SQLに "ABCDEF"という文字列があります。SQLクエリの分割問題

は、私は、次の表形式で表示したい: -

A 
B 
C 
D 
E 
F 

が、私はこの場合CURSORなど

+2

** **データベースとバージョンは何ですか?文字列の操作は、実際のベンダーにかなり依存しています。そのトピックの標準化の点ではあまりありません。 –

+2

また、なぜそれをしたいのか説明できますか?私たちの中には、中核的な問題を理解すれば、それをやる必要を避ける良い方法があります。 – JohnFx

答えて

0
with rec(recText, letterno) AS 
(
    Select LEFT('ABCDEF',1), 
      1 
    Union all 
    Select Left(RIGHT('ABCDEF',len('ABCDEF') - rec.letterno),1), 
      letterno +1 
    from rec 
    where rec.letterno < len('ABCDEF') 
) 
select top 1 STUFF(( 
SELECT ' '+recText FROM rec FOR XML PATH('')), 1, 1, '') FROM rec 

T-SQL 2008のソリューションを使用しなくても知らないことをどのように行うことができますSQL Serverでは、あなたの質問

0

のために食料調達する、あなたは

    を使用することができます変数

    declare @str varchar(100) set @str = 'ABCDEF' 
    select SUBSTRING(@str, number, 1) 
    from master..spt_values 
    where type='P' and number between 1 and LEN(@str) 
    order by number 
    

    そして、あなたがしている場合から

  • SUBSTRING関数(長さ2047まで)事前定義された数のシーケンスを取得するために、文字列から
  • master..spt_valuesを1つの文字を取得する

テーブルの列から分割

create table strtest (id int, str varchar(100)) 
insert strtest select 1, 'abcdef' 
insert strtest select 2, 'qwertyui' 

select t.str, v.number, SUBSTRING(t.str, v.number, 1) 
from strtest t 
inner join master..spt_values v 
    on v.type='P' and v.number between 1 and LEN(t.str) 
order by t.id, v.number 

あなたが他のDBMSを使用している場合は、似た何かを、その数のTABLを作成することができますもし準備ができていなければe。

+0

ありがとうございます。それは素晴らしい仕事です。 –

+0

@Vipin - それを聞いてよかったです。このサイトの規範は、問題を解決した場合に受け入れられるように答えをチェックすることです。 – RichardTheKiwi