• ベストアンサー

SQLの書き方を教えてください

お世話になります。すみませんが教えてください。 ORACLE9iに対してプログラムのSQLの中で以下のような記述をしています。 SUBSTRB(A.TORIHIKISAKI,1,6) ここで、TORIHIKISAKIに「オきゃくさま」というデータが処理対象になったときに、「オきゃ」となってしまいます。 6バイトにして出力したいので「オきゃ」+ブランク1バイト の形にしたいのですがどのように記述すればよいのでしょうか? お手数ですが経験者の方、ご回答、よろしくお願いいたします。

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

  • ベストアンサー
  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.3

#2です。 以下を試してみました。 "オ"は半角です。半角スペースは"_"で表現しています。 RPAD(SUBSTRB('オきゃくさま',1,6),6,'o') →'オきゃ_' RPAD(SUBSTRB('オきゃくさま',1,5),6,'o') →'オきゃo' なので、SUBSTRBの時点で半角スペースが補完されていると思われます。

SQLBEGINNER
質問者

お礼

回答ありがとうございます。 御礼遅くなりましてすみませんでした。 うまくいきました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.2

SUBSTRB(A.TORIHIKISAKI,1,6) の段階でブランク1バイトが補完されていると思うのですが。 「オきゃくさま」の「オ」は半角カタカナですか? 全角カタカナだと「オきゃ」で6バイトになるのでブランクは入りません。

SQLBEGINNER
質問者

補足

すみません、「オきゃくさま」の「オ」は半角カタカナです!「オきゃ」で5バイトになります! gooでは勝手に2バイトになってしまうのですね。。。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

お世話になります。 環境がないので試せないのですが、 RPAD(SUBSTRB(A.TORIHIKISAKI,1,6), 6) はどうでしょうか。

参考URL:
http://oracle.se-free.com/dml/05_pad.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PL/SQLでのSQLエラーログの出力について

    PL/SQLでのSQLエラー発生時のログ出力について教えていただきたいことがあります。 既存のシステムで、メインからAの処理を呼び出し、さらにAからBの処理を呼び出している処理で、 エクセプション処理がメインにしか記述されていないものがありました。 この場合、処理Aや、処理BでSQLでエラーが発生した時は、 メインでエラーログが出力されると思いますが、 何か特定特別なケースの場合、きちんと異常が認識できない等の問題はないでしょうか? お手数をおかけしますが、よろしくお願いします。

  • SQL*LOADER

    VB6.0です。 oracle9iです。 VBのソースでsql*loaderの処理をしたいのですが, どうやったらいいかわからないので教えてください。

  • SQLでグルーピングしてやや複雑な集計する方法

    SQLでグルーピングしてやや複雑な集計する方法 こういうことってやりたい時あるよなーと思いつつ いい方法が思い浮かばないので質問させてください。 日付ごとにタイプなどの条件により集計して、 1行で1日分のデータを並べて出力したいと思っています。 とりあえずイメージを提示します。 テーブルイメージ -------------------------- 日付     額 タイプ 20090101  5000  1 20090101  1000  1 20090101  3000  2 20090101  2000  2 20090101  -200  4 20090101  3000  4 20090101  2000  4 20090102  1000  1 20090102  1000  2 20090102  1000  2 20090102  -100  4 20090102  4000  4 20090102  3000  4 -------------------------- 出力イメージ ----------------------------------------------------- 日付   タイプ1 タイプ2 タイプ4(正) タイプ4(負) 20090101   6000   5000   5000   -200 20090102   2000   2000   7000   -100 ----------------------------------------------------- 複問い合わせを駆使すればできるような気もするのですが、 日付で集計しなければならないところが難しく感じています。 合計が0(というか対象データが無い場合)の部分は空白でもかまいません。 データベースはOracleですがOracleだけでしか使えない特殊な機能ではなく 普通のSQLの組み合わせで解決したいと思っています。 (でもOracle固有の機能で解決できるのならそれも教えていただきたいです) 基本的に1発のSQLで表形式で帰ってくるSQLの書き方をお願いします。 できれば、SQLそのものを記述していただきたいです。 何回かSQLを発行してあとでエクセルで…とか、他のPG言語でなんとかする という方法は今回はいりません。 よろしくお願いします。

  • こんなことできるSQL文はありますでしょうか?

    お世話になります。 oracle9iとPostgreSQL7.3のいずれかで 実現したいのですが。 こんな並びのデータを no | resno | title ----+-------+------ 1 | 1 | あ 2 | 1 | い 3 | 1 | う 4 | 4 | え 5 | 1 | お 6 | 4 | か 7 | 7 | き 8 | 1 | く 9 | 9 | け こんな風に no | resno | title ----+-------+------ 9 | 9 | け 7 | 7 | き 8 | 1 | く 5 | 1 | お 3 | 1 | う 2 | 1 | い 1 | 1 | あ 6 | 4 | か 4 | 4 | え SQL文一発で並び替えることは できますでしょうか? resnoのグループごとをnoの降順で 表示したいのですが、、、 可能なのか不可能なのかもわかりません。 可能であればSQL文をご教授いただければ 幸甚です。 よろしくお願いします。

  • SQLで1バイト、2バイト混在データでの切出し

    お世話になります。 SQLで1バイト、2バイト混在データでの切出し方法を教えてください。 例:以下のような混在データから左から6バイトを切出したいです。 123:交通費 1234:通勤費 123:交通費 の場合は、「123:交」の形で6バイト きれいに切出せますが、 1234:通勤費 の場合は、「1234:通」の形で6バイトが「通」にかかってしまっています。 この場合、最後の「通」は無視して、「1234:」で出力されるように したいのです。 何か良い書き方を教えて下さい。 よろしくお願いいたします。

  • SQLローダーについて

    カンマ区切りで""で囲まれたCSVファイルがあります。 例) "1","東京","おとこ","山田太郎","","","" このデータをOracle 9iデータベースにinsert、updateするプログラムをVBで書いたのですが パフォーマンスが悪いのでSQLローダーでやりたいと考えています。 更新テーブルはひとつなのですが、"東京"なら1、"大阪"なら2、"福岡"なら3というようにデータを突っ込む前に比較・変換する必要があります。 このような場合でも、SQLローダーって使えるんでしょうか? よろしくお願いします。

  • SQL文の長さ

    お世話になります。 SQL文の長さには限界があるのでしょうか? 現在、オラクル付属のSQL PlusにてSQL文を流したところ、途中で止まってしまいます。 部分的に流しますと問題なく通ります。 環境はoracle9iです。 なにかわかりましたらよろしくお願い致します。

  • Oracle SQL実行時間について

    Oracle初心者です。 あるテーブル(レコード数:100万件程度)に対してSelectするSQLの実行時間を、Oracleのset timing on, set autotrace onlyで計測しました。 結果は1000ms程度だったのですが、 同じSQL文を実行するプログラム(java)を作成し、pstmt.executequery()してresultsetからデータをgetするまでの時間をログに出力させたところ、400ms程度でした。 プログラムの性能目標として、set timing on の値を設定していたため、実際の結果(javaプログラムが出力した処理時間)の評価に困っています。 差がでる原因をご教示いただけませんでしょうか。 宜しくお願いします。

  • SQLの追加でオラクルとアクセスの区別

    Access97を使用しています。   元のデータベースが オラクルとアクセスの区別について  モジュールでSQLを使って複数の項目を追加する場合  キーとなる項目にはデータがあるのですが  他の項目の中で空白の場合もあります。  その時 テキストボックスにデータが入っていない場合 オラクルであれば、空白の項目があっても データ自体は追加されるのですが アクセスであれば、1つでも空白があれば 追加されません。 仮に空白であれば、" "ブランクを入れて 処理するようにしています。 モジュールは同じ形式ですが オラクルとアクセスで上記のような違いはあるのでしょうか?

  • Oracle10g、SQLコンパイルした日時一覧の出し方

    お世話になります。 Oracle10gにて、PL/SQLのプロシージャをコンパイルした日時を一覧にしてテキストファイルに出力するか、コピペでエクセルか何かに貼り付けて、正しくコンパイルされたプログラムが動いていることの確認に使いたいのですが、プロシージャ毎のコンパイル日時(更新日時?)を出すようなSQL文をご存知でしたら教えてください。 よろしくお願いします。

このQ&Aのポイント
  • 2週間後から急遽一人暮らしをするため、家財道具を揃える必要がありますが、時間的余裕がなく焦燥感に駆られています。
  • 短期レンタルは割高なため、中古品を一気買いすることも考えましたが、失敗の可能性やどれを選べばいいか迷っています。
  • 帰国後も同じ状況が続くため、入念な下調べなしでまとめ買いすることに不安があります。アドバイスをお願いします。
回答を見る