• 締切済み

【PL/SQL】カンマ区切りのレコード、データ取り出し

超初心者です。 2つの編集ワークを宣言して、WORKにカンマ区切りのレコードを作成します。 そしてWORKの「matumoto」だけを取り出してRECORDに入れたい場合、どうしたらいいのでしょうか? そのまま「matumoto」を放り込めとか言われそうですが、実際はSELECTして取り出してきたデータもろもろをカンマ区切りでWORKに1レコード放り込んで、必要なものだけをRECORDに入れるという動きをさせています。 質問させていただくにあたってこういう記述にさせていただきましたのでご了承ください^^; よろしくお願いします。 /* 宣言 */ WORK VARCHAR2(1000); RECORD VARCHAR2(1000); WORK := ''; RECORD := ''; WORK := WORK || '"' || aoki || '",'; WORK := WORK || '"' || matumoto || '",'; WORK := WORK || '"' || yosida || '"'; WORK(中身はこんな感じ)→"aoki","matumoto","yosida"

みんなの回答

  • joih
  • ベストアンサー率35% (37/105)
回答No.2

n番目のデータを取り出したいなら、 カンマの数を カーソル処理で数えて INSTRでとりだしたらどうですか。

akigiri0213
質問者

お礼

ありがとうございました。

  • joih
  • ベストアンサー率35% (37/105)
回答No.1

SELECT SUBSTR( '"aoki","matumoto","yosida"' ,INSTR('"aoki","matumoto","yosida"', 'matumoto') ,LENGTH('matumoto') ) FROM DUAL キテレツな処理ですね。 プログラムの設計が悪い香りがプンプンしますが。 INSTR関数で開始位置がわかるので、 matumotoの長さ分だけSUBSTRで取り出します。

akigiri0213
質問者

補足

お返事ありがとうございます。 私も色々おかしいと思います汗 というかまず質問の書き方がまずかったです。 カンマ区切りのデータが大量にあって、matumotoに限らず全て違うものが入っていて、文字数も違うんです。 "0","suzuki","tarou","1980/02/10","A","123-2000","toukyouto","sibuya","3-2-102"....... みたいな感じで、N番目を取り出したいといった感じです。 名前と生年月日を取り出したいとか、血液型と住所を取り出したいとか。 名前や住所なんて人によって桁数も違うので… VBみたいにsplitとかないんですかね? WORK[2]みたいな添え字で指定したりとか… よろしければアドバイス等よろしくお願いいたします。

関連するQ&A