• 締切済み

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

joihの回答

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

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

akigiri0213
質問者

お礼

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

関連するQ&A

  • csv(カンマ区切り)の読み込みと書き出し

    Visual Basic Express Edition 2008での質問です。 下記のようなカンマ区切りのCSVファイル(拡張子はtxt)があります。 (150万行以上あるので、エクセルでの編集が出来ません) 1,18845.50,-14572.50,16.30,1 2,18846.50,-14572.50,16.29,1 3,18832.50,-14573.50,16.25,1 で、実はこのCSV形式のファイルの一番左のレコードと 一番右のレコードは必要ないので削除し、 18845.50,-14572.50,16.30 18846.50,-14572.50,16.29 18832.50,-14573.50,16.25 上記のようなデータにして、再び同じ形式で保存したいのです。 どなたか、いい方法orソースの提供をお願いしたいです。 可能ならば、複数のデータ (そのテキストファイルが200個ほどあるので)に対して、 プログラムを実行できればなおいいと思います。 よろしくお願いします。

  • REGEXPで希望の動作をしてくれない

    MySQLは5.0を使っています。 1のフィールドに「11,28,33」と言うようにカンマ区切りのデータを保存しています。 下記ページと全くやりたいことが同じだったのですが、 http://q.hatena.ne.jp/1194079682 SELECT * FROM test_db WHERE user_id REGEXP '^11$' にしても抽出してくれません。 フィールドを「11」のみにすると問題なく抽出してくれました。 カンマ区切りのデータから特定の数字を抽出するためには他になにが必要でしょうか。 フィールドがvarcharなのがいけないのでしょうか。

    • ベストアンサー
    • MySQL
  • DBデータをcsvで出力の際カンマでエラー

    下記の構文で、mysqlのデータをcsvに出力したいのですが、 カンマ区切りのカンマ部分でエラーになります。 phpかmysqlの設定なのでしょうか? どなたかご教授お願いいたします。 ---以下スクリプト header("Pragma: cache;"); header("Content-type:application/x-csv"); header("Content-Disposition: inline; filename=db_out.csv"); mb_language ('Japanese'); $db = DB::connect($dsn); if(DB::isError($db)){ die($db->getMessage()); } $sql = "select email,adress,date from table "; $result = &$db ->query($sql); if(DB::isError($result)){die($db->getMessage());} while ($record = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $csv_line =&sprintf("%s,%s,%s\n" ,$record['date'] ,$record['email'] ,$record['adress']); print(mb_convert_encoding($csv_line, "SJIS", "EUC-JP")); } $db->disconnect(); --------------ここまで エラー内容 Parse error: syntax error, unexpected ',' 行数を見ると csv_line =&sprintf("%s,%s,%s\n" この行です。 環境は php4.4.4 mysql4.1.21 FreeBSD Apche1.3.37 です。よろしくお願いします。

    • 締切済み
    • PHP
  • カンマ区切りで値の取り出し

    XML内のある値が","で区切られていて、これを一つずつ取得したいのですが、 いいサンプルがなくて困っています。 【例】<abc>1,2,3,4</abc> この中の値は4つとは限りません。 2つであれば、substring-before substring-after、 でいけると思うのですが、例のような場合に for-eachを使って一つずつ取り出せないでしょうか。

    • ベストアンサー
    • XML
  • 変数の取り扱いについて

    はじめまして。思いっきりSQLSERVERは初心者なんですが宜しくお願いします。 現在SQLSERVER2005です。 ややこしくなるので要点だけ以下まとめています。 変数を利用してレコードを抽出する時なんですが… ALTER PROCEDURE Test @Rank INT BEGIN DECLARE @SELECT AS VARCHAR(100) DECLARE @WHERE AS VARCHAR(100) DECLARE @SQL AS VARCHAR(200) SET @SELECT = 'SELECT * FROM tblA ' SET @WHERE = 'WHERE Rank > ' + @Rank SET @SQL = @SELECT + @WHERE EXEC(@SQL) END 実行すると varchar の値 'WHERE Rank > 'をデータ型 int に変換できませんでした。 となります。 Rank部分が数値なんですが、どのように取扱いすべきなんでしょうか。

  • splitの使用方法

    String.split の使用に関してです。 ファイルから一行づつ読み出して split で切って配列にしたいと考えています。 ファイルの中身は 1|ssm3u|00000| 2|ssm3u|11111| のように「|」区切りになっています。 通常のcsv等、カンマ区切りのファイルは split(","); を使用して問題なくできたのですが、 split("|"); と書くと、 「|」ではなく、1文字ごとに切ってしまいます。 どうすれば「|」ごとに切ることができるのでしょうか? あるいは、私のプログラム記述ミスでしょうか?

  • コンマ区切りのデータを数える

    id place 5 上野 6 銀座 7 銀座 これに対して SELECT place,count(*) FROM tb GROUP BY place ORDER BY COUNT(*) DESC; でplaceのvalueごとのランキング的なものを作成することはできたのですが id place 5 上野 6 銀座,東京 7 銀座,上野 8 銀座 に対して place COUNT(*) 銀座 3 上野 2 東京 1 という表を表示したいのですが、可能ですか?

    • ベストアンサー
    • MySQL
  • 【PL/SQL】CURSOR ・・・ IS SELECT・・・FOR UPDATE が機能しない

    カーソルの宣言で、FOR UPDATE を指定しているのに、 WHERE CURRENT OF での更新が効きません。 エラーは発生せず、全件分ループも回っているのですが、値がまったく書き換わっていません。 Oracle Ver. = Oracle8i Release 8.1.6.0.0 CREATE OR REPLACE FUNCTION TEST_FNC RETURN BOOLEAN IS todofu_cd NUMBER(2) := 0; strSQL VARCHAR2(2000) := ''; CURSOR cur IS SELECT * FROM TEST_TBL FOR UPDATE; BEGIN For cur_rec In cur Loop DECLARE BEGIN SELECT TODOFU_CD INTO todofu_cd FROM M_POST WHERE POST_NO = cur_rec.POST_NO; EXCEPTION When NO_DATA_FOUND Then todofu_cd := 0; END; UPDATE TEST_TBL SET TODOFU_CD = todofu_cd WHERE CURRENT OF cur; COMMIT; End Loop; EXCEPTION  (省略) END; / 「CURSOR cur IS SELECT * FROM TEST_TBL FOR UPDATE;」の部分は、 「CURSOR cur IS SELECT POST_NO, TODOFU_CD FROM TEST_TBL FOR UPDATE OF TODOFU_CD; 」と記述しても結果は同じでした。 上書きしようとしている値である「todofu_cd」にきちんと望む値が格納されていること、ループが正常に回り、各行にアクセスしていることは、確認済です。 原因が分かる方がいらっしゃいましたらご教授下さい。 また、質問の内容に不備があるようでしたら、ご指摘下さい。 以上、どうかよろしくお願い致します。

  • Symfowareでの動的SQL

    富士通のSymfowareでC言語での動的SQLを使ったプログラムを実行したいのですが、疑問点が2点あります。 諸事情でマニュアルも環境もないのにコーディングしないといけません。 1.EXEC SQL EXECUTE IMMEDIATE 'SQL文' ; は使用できますか? ORACLEなどでは EXEC SQL EXECUTE IMMEDIATE 'DELETE FROM A' ; などと記述できますが・・・ 2.検索系(SELECT)も1.のように動的に 実行したいのですが、検索結果をカンマ区切りで 編集する必要があります。 しかも、SELECT文は文字列としてくるので、 あらかじめ構造体等で定義してFETCHするようなこと   はできません。 ORACLEの場合は、ちょっと難しいですが、できるようです。 Symfowareでは可能でしょうか? Symfowareの情報があまりにも少ないので、わかる範囲でかまいません。 よろしくお願いします。

  • EXCEL VBAでのCSVファイルの編集

    CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。 ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。 困っています。どなたかお助け下さい。