プロが教える店舗&オフィスのセキュリティ対策術

超初心者です。
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"

A 回答 (2件)

n番目のデータを取り出したいなら、


カンマの数を カーソル処理で数えて
INSTRでとりだしたらどうですか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/19 19:19

SELECT SUBSTR(


'"aoki","matumoto","yosida"'
,INSTR('"aoki","matumoto","yosida"', 'matumoto')
,LENGTH('matumoto')
)
FROM DUAL

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

この回答への補足

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

補足日時:2006/12/18 10:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す