質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

1回答

1498閲覧

【sqlplus,set】抽出したレコードをカラムごとに区切りたい

710LOVER

総合スコア10

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2021/11/24 10:39

編集2021/11/25 00:16

前提・実現したいこと

抽出はシェルスクリプトで実行している。

各カラムを空白で区切った抽出データを作成するためにsetコマンドで設定しているが、カラム5以降でくっついてしまうので改善したい。

発生している問題・エラーメッセージ

001 00000000 001 002 003aホゲホゲホゲhogehogehoge

求めている出力結果

001 00000000 001 002 003 a ホゲホゲホゲ hogehogehoge

該当のソースコード

sqlを実行する前に以下の設定を行っています。

set echo off; set feedback off; set heading off; set tab off; set trim off; set wrap off; set pagesize 0; set space 0; set linesize 749; column id_no format a3 column menu_no format 00000000 column group1 format 000 column group2 format 000 column group3 format 000 column menu_type format a1 column title format a30 column data_name format a128 select menu_no,group1,group2,group3,menu_type,title,data_name from hogehoge;

試したこと

試しにカラム5とカラム6の間に|| ' ' ||を挿入して抽出してみたが崩れてしまう。

set echo off; set feedback off; set heading off; set tab off; set trim off; set wrap off; set pagesize 0; set space 0; set linesize 749; column id_no format a3 column menu_no format 00000000 column group1 format 000 column group2 format 000 column group3 format 000 column menu_type format a1 column title format a30 column data_name format a128 select menu_no,group1,group2,group3 || ' ' || menu_type,title,data_name from hogehoge;

結果(カラム4とカラム5がくっついてしまう)

001 00000000 001 0023   aホゲホゲホゲhogehogehoge

補足情報(FW/ツールのバージョンなど)

環境:
teraterm
oracle database 12c
SQL:sqlplus 12.2.0.1.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2021/11/24 11:38

[Oracle Database]タグを追加してください。 Oracle Databaseとsqlplusのバージョンを質問に追記しては?
Orlofsky

2021/11/24 15:12

ソフトウェアのバージョンを明記する習慣は身に付けてください。オラクル・サポートにバグを修正するパッチがあるかも確認したいです。要サポート契約。バグなら影響が大きいから、そのバージョンを使うかを考えないといけません。Oracle9iのバグが酷すぎたのを思い出します。パッチにバグがあって更に悪くなったりして大変でした。
710LOVER

2021/11/25 00:17

アドバイスありがとうございます。 対応しました。
guest

回答1

0

とりあえず、文字型列のformatの桁数を増やしてみては?

SQL

1 column menu_type format a1 23 column menu_type format a2 4 5 column title format a30 67 column title format a31

投稿2021/11/24 11:38

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

710LOVER

2021/11/25 00:29

夜分遅くに回答ありがとうございます。 試した結果、menu_typeとtitleは分離しましたが、数列であるgroup3と文字列のmenu_typeはくっついたままでした。
710LOVER

2021/11/25 02:54

連携して頂きありがとうございます。 group3のカラム設定に”B000”とつけましたが、やはりgroup3とmenu_typeはくっついてします。
710LOVER

2021/11/25 02:55

連携して頂いたサイトみながら色々試してみます。
Orlofsky

2021/11/25 03:35

000B, B000B などいろいろ試してみては? なお、Oracle12.2 はそろそろどんなに大きなバグが見つかっても新たにパッチを作ってくれなくなる古いバージョンです。 サポート契約が有効なら無料でバージョンアップできます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問