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

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

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

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

Q&A

解決済

2回答

8930閲覧

【Oracle】SPOOLでNULLを出力すると半角スペースが出力されてしまい、想定通りにならない

ametyan

総合スコア43

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

0グッド

0クリップ

投稿2018/06/25 11:53

SPOOLコマンドで下記のとおりNULLを出力すると
aaa, ,bbb
となり、NULLが半角スペースになっています。
私が理想としている出力は
aaa,,bbb
というような、NULLが0バイトの文字になってほしいのですが、どうしたら可能でしょうか?

■補足
select 'aaa' || ',' || ',' || 'bbb' from dual;
というようなやり方もあるみたいですが、これ以外に方法はありますか?

[vagrant@ ~]$ sqlplus usr01/usr01@XE SQL*Plus: Release 11.2.0.2.0 Production on Mon Jun 25 11:47:01 2018 Copyright (c) 1982, 2011, Oracle. All rights reserved. ERROR: ORA-28002: the password will expire within 7 days Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production SQL> set head off SQL> set pages 0 SQL> set lines 100 SQL> set echo off SQL> set colsep ',' SQL> show NULL null "" SQL> spool out.txt SQL> select 'aaa', NULL, 'bbb' from dual; aaa, ,bbb SQL> exit Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production [vagrant@ ~]$ cat out.txt SQL> select 'aaa', NULL, 'bbb' from dual; aaa, ,bbb SQL> exit [vagrant@ ~]$

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/06/25 12:36

SET NULLコマンドはやってあるんですよね? デフォルト空文字列みたいですけど。
guest

回答2

0

解決済みですが、CSV出力な感じなので、取り敢えず以下紹介。
Oracle DatabaseのテーブルをCSV出力する6つの方法
関係なかったら、スルーして下さい。

投稿2018/06/25 12:58

sazi

総合スコア25195

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

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

0

ベストアンサー

SQL

1select 'aaa' || ',' || NULL || ',' || 'bbb' as string from dual;

投稿2018/06/25 12:02

Orlofsky

総合スコア16415

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

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

ametyan

2018/06/25 12:03

ご回答ありがとうございます。 文字列連結の「||」を使用しないで、同じ結果を出力することは可能ですか?
Orlofsky

2018/06/25 12:32

NULLの表示幅を0にしたいという要件なので || は必要です。
ametyan

2018/06/25 12:39

分かりました。ありがとうございます。
Orlofsky

2018/06/25 12:43

あとはNULLの列は出力しないで、SPOOLした結果を利用する方で対応することも考えられらます。
sazi

2018/06/25 12:55

||はconcat()と同義なので以下の様に記述はできますけど、求めていることでは無い気がする。 select concat(concat('aaa,' , NULL ) ,',bbb') from dual;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問