• ベストアンサー

改行コード

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

質問者が選んだベストアンサー

  • ベストアンサー
  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.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でのリザルトセットを作成して回してください。

その他の回答 (3)

  • takopon
  • ベストアンサー率69% (27/39)
回答No.3

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に代入 というような処理をループさせれば、 改行を除去した結果が取れると思います。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> その文字列をまず改行コード毎に分割します レコードが複数作成される、ということなんでしょうか? (上記の例なら1行が3レコードに分割される、ということ?) レコードにその他の列はあるのでしょうか? 無いのならばOracleなり、Accessなり、CSV出力する文を作成して、 インポートし直すのがもっとも簡単かと思います。

noname#102878
noname#102878
回答No.1

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

yoshiki_reo
質問者

補足

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

関連するQ&A

  • JTextAreaを改行コードを直接書かずに改行させたいです

    JTextAreaを改行コードを直接書かずに改行させたいです JTextAreaは表示だけです JTextAreaの下にあるJTextFieldに文字列を入れてJButtonをクリックすると JTextFieldに入れた内容がJTextAreaに追加されていきます その時に、既に入っている内容の最後を改行して 新しい行にJTextFieldの値を入れなければいけません その時に、改行コードを文字列に直接書いてはいけないというルールがあります どのようにすればいいでしょうか

  • 改行コードを削除出来ない

    エクセルファイルのセルに文字列が大量に入ってます。1セル当たりは4,5文字です。 文字列の後ろに改行コードが付いてるようのです。 改行コードだと思った理由 ・LEN(セル)で文字数を表示させると、見た目より1文字多い ・セルを選択し画面上部の編集ボックス?で文字列の後ろをカーソルでクリックし、  左矢印←を押すと、2回押しで動く。いかにも見えない一文字があるかのように動く ・文字列後ろをクリックしバックスペースを押すと←による動きが正常になる 取った対策 セルをいくつか選択し、置換処理で削除しようとしたが、削除出来なかった。 検索文字列: 改行コード(ctrl+J) 置換文字列: なし バックスペースキーで解消出来ますが、全セルで行うには数が多過ぎます。 置換操作でなぜ削除出来なかったのでしょうか?改行コードではないのか?とも疑ってます。 非常に小さいスペース? どうすれば全部削除出来るでしょうか?

  • fpoenからの改行コードの扱いについて

    ただいまMacOSX(10以降)でプログラミングをしています。このOSでは改行コードはLFつまり、"\n"が当てはめられているはずです。(でいいんでしょ??) ///// abc.txt(改行や空白もそのまま)////// abc def ghi ///////////////////////////////////// このテキストをfopenで開き、fgetsで1文字ずつスキャンしていて"\n"にぶちあたるとある変数をインクリメントし、最後にその行数を出すというプログラムを書いてます。 この場合改行"\n"は3回あるので最終的に3+1、つまりこのテキストは4行あるということを表示できるはずなのですが、なぜか改行が1回としか認識されず結果2行のテキストとして出力されてしまいます。 いろいろ試した結果、どうやら"\n"を判断できている場所はその次が空白の行の場合だけなのです。つまり、コンピュータ的には ///// abc.txt(改行や空白もそのまま)////// abc\n ←ここは次にdefという文字列がきているので\nが認識されていない def\n ←ここしか認識されていない   \n ←同様に次の文字列がくるので認識されていない ghi ///////////////////////////////////// としか認識されていないようなのです。 なぜ\nの続きが文字列であると なぜこのようなことになるのでしょうか? \nの扱い方が間違っているのでしょうか?解決方法がおかる方がいればよろしくおねがいします。

  • スカラー変数中の改行コードでセパレーションしたい。

    複数行に渡る文字列を含むデータをスカラー変数に格納したのですが 格納後にこれを改行コード(\n)をセパレータとして配列に分けたいと思っています。 データ(abc.txtd)は aaaaaa bbbbbb cccccc といったものです。 $data = "abc.txt"; @array = split (/\n/, $data); としてもうまく配列に分割してもらえないのですが、どうすればよいのでしょうか。 基本的な質問で申し訳ありませんが、どなたかよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 改行コード等について

    Winで普通のテキストエディタで改行やタブ等すると、実際には改行コード(\n\r等)を入力していると思います。そのコードを含めた文字列を全て表示して見てみたいのですが、どうすれば見られるでしょうか?

  • C# 文字列を改行コードで分割

    C# 文字列を改行コードで分割 テキストボックスに記載された文字列を1行ごとに取り出そうと思い string[] strs = textBox1.Text.Split('\n'); とコーディングしたら、末尾に\rがついてしまいました。 末尾の\rを削除するコードを追加して書けばよいのですが、改行コード\r\nで分割する方法ありましたらお教えください。

  • 改行コードから改行コードまでをスプリットして配列に取り込む方法を教えて

    改行コードから改行コードまでをスプリットして配列に取り込む方法を教えてください。 ファイル「sample.txt」の中に 文字列A 文字列B 文字列C 文字列D 文字列E 文字列F 文字列G と書かれていたとします。このファイルを開き、配列@listに @list = 文字列A\r\n文字列B\r\n文字列C\r\n,文字列D\r\n文字列E\r\n,文字列F\r\n文字列G\r\n となるようなコードを教えてください。 要は二重改行コード\r\n\r\nをスプリッタとして複数の行を配列に取り込む方法です。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 改行コードについて

    phpで開発をしています。 テキストファイルに文字列を出力する際に、改行コードを扱う以下のような場合について、 ①$str='ab\ncd'; ②$str="ab\ncd"; ①の変数の内容を出力すると\nがそのまま出力されます。 ②の変数の内容を出力すると改行されて出力されます。 質問ですが、この二つの違いについては、 ①のときは\nという文字として出力された。 ②のときは改行コードとして出力された。 (バイトコードで見ると、二つのコードは違っている?) という認識で良いのでしょうか。 ご教示いただけますと幸いです。

    • ベストアンサー
    • PHP
  • テーブル内の改行のズレ

    テーブル内で、文字の並びを縦横揃えようと思い、MSゴシックを使っています。幅を指定しているので、自動改行されるのですが、微妙なところでズレてしまいます。"。"の文字が影響しているようなのです。 例1)では、 ABCDE ABCDE となり、 例2)では、 ABCDE ABCD E。 となります。 例2)を ABCDE ABCDE 。 とするには、どうしたらいいのでしょうか? 例1) <table border=1 width=90 cellspacing=0 cellpadding=2> <tr> <td><font face="MS ゴシック"> ABCDEABCDE</font> </td> </tr> </table> 例2) <table border=1 width=90 cellspacing=0 cellpadding=2> <tr> <td><font face="MS ゴシック"> ABCDEABCDE。</font> </td> </tr> </table>

    • ベストアンサー
    • HTML
  • jsp 改行コードで改行させて表示したい

    はじめまして。 PostgreSQLから読み込んだ文字列データを表示させるtomcat+struts+servlet/jspを作成中です。 データの文字列に含まれる改行が、クライアントに表示された際に反映されず困っています。 過去ログも調べ、近い質問はありましたが、僕とは内容が微妙に違うようで、改めて質問させていただきました。 例えば、あるテーブルのある項目に、 A B C というデータ(A,Bそれぞれの後に改行のある3行の文字列)があるとします。 これを読み込みaction form bean(と言うのですか?setter/getterを定義する関数です)を介してjspに埋め込むと、できあがるhtmlでは、 ABC と改行されずに表示されます。 htmlで改行させるには「<BR>」が必要なのかと、データ文字列に0x0dや0x0a、または0x0d+0x0aがあれば「<BR>」に置き換えてaction form bean(?)のsetterに渡してjspを作ると、今度は、 A<BR>B<BR>C と「<BR>」が文字列として表示されます。 htmlをソース表示すると、「A&lt;BR&gt;B&lt;BR&gt;C」で、親切にも「<」「>」をそれぞれ「&lt;」「&gt;」に勝手に置き換えあくまで文字列として表示してくれるようです。 試しに改行コードを「&lt;BR&gt;」に置き換えても予想通りその部分は &lt;BR&gt; とそのまま表示され、そのソースは「&amp;lt;BR&amp;gt;」でした。 「<」や「&lt;」等をそれぞれ「&lt;」「&amp;lt;」のように置き換える作業は、どこが行っているのでしょうか。 また、改行位置で改行させるにはどうすればよろしいでしょう。 OSはwindowsXPです。 無知ゆえに、つまらないことで悪戦苦闘しているのかも知れませんが、経験も浅くてよく解りません。 宜しくお願い致します。

    • ベストアンサー
    • Java