アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQL文について教えていただきたいことがあります。
ある列に改行コードを含む文字列があります、
その文字列をまず改行コード毎に分割します、
その後に文字列の最後にある改行コードを消してしまいたいのですがどうすればよろしいでしょうか?みなさま宜しくお願い致します。

例)○=改行コード
ABCD○ABCDE○ABC○

ABCD○
ABCDE○
ABC○

ABCD
ABCDE
ABC

A 回答 (4件)

まず、前提条件として'ABCD○ABCDE○ABC○'の改行マークの位置が固定位置であれば可能です。



takoponさんの回答にある様にSUBSTRを利用します。例えば改行マーク位置が5文字目/11文字目/15文字目という風に固定位置だと仮定すれば

SELECT SUBSTR(Mark,1,4),SUBSTR(Mark,6,10),SUBSTR(Mark,12,3) into moji1,moji2,moji3
FROM ~

ちなみにMarkとう項目に'ABCD○ABCDE○ABC○'が設定されていて、分割後の変数がmoji1~moji3となります。
ということでINTO文でやれると思います。

文字列改行マーク位置が不定の場合はSQL文1回での処理は不可能なので、takoponさんのご指摘の通りPL/SQLであればFECH文を作成して項目単位での処理を行ってください。
VB,VBAであればレコードセットもしくはoo40でのリザルトセットを作成して回してください。
    • good
    • 0

OracleのPL/SQL文でということならば、


INSTRB(S,CHR(13)||CHR(10),1)で
文字列Sの先頭から初めて出現する改行コードのCRの位置Xをしらべて、
SUBSTRB(S,1,X - 1) で最初の改行までの文字列S1を、
SUBSTRB(S,X + 2) で残りの文字列S2を切り出して、
S1をどこかテーブルか何かに格納し、
S2をSに代入
というような処理をループさせれば、
改行を除去した結果が取れると思います。
    • good
    • 1

> その文字列をまず改行コード毎に分割します


レコードが複数作成される、ということなんでしょうか?
(上記の例なら1行が3レコードに分割される、ということ?)

レコードにその他の列はあるのでしょうか?
無いのならばOracleなり、Accessなり、CSV出力する文を作成して、
インポートし直すのがもっとも簡単かと思います。
    • good
    • 0

SQL文の質問というよりは、DBから取得した文字列を加工する、開発言語側の質問のように思いますが。


開発言語はなにを使うのでしょうか?

この回答への補足

SQLデータベースでストアドプロシージャを作成して結果セットを取得する途中で、
質問内容を実現したいのですが、どうでしょうか?

補足日時:2003/03/10 20:22
    • good
    • 0

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

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