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

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

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

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

Q&A

解決済

3回答

33145閲覧

SQLでNULLを空白に変えたい

k499778

総合スコア599

SQL

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

0グッド

0クリップ

投稿2015/11/18 13:02

現在SQLを使ってレコードを取ってくるのに苦労しています。

質問があるのですが、
結論から言うと、

A5:SQL Mk-2でSELECT文を書くときにNULLの列を空白に変えてレコードを取得するにはどうしたらいいでしょうか?

他のツールなら
isNULLやifnull,nvlは「そのようなメソッドは存在しない」とエラーが起き、COALESCEはSQL文は通ったのですが、NULLを空白に変換することなくNULLで返ってきてしまいました。

ちなみに以下のように書きました。

SELECT
COALESCE(列名,' ')
FROM テーブル名

A5:SQL Mk-2は特殊なのでしょうか?
もしA5:SQL Mk-2でNULLを空白に変える方法が分かる方は教えていただけると有り難いです。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2015/11/18 13:05 編集

データベースは何をお使いですか? A5:SQL Mk-2はデータベースにSQLを投げているだけで、SQLはデータベースで解釈されますので、データベースがわからないと回答のしようがないです。
k499778

2015/11/18 13:06

たしかibatisかmybatisだったように思います。ポスグレベースと言っていたような。曖昧で申し訳ありません。
退会済みユーザー

退会済みユーザー

2015/11/18 13:12

PostgreSQLですね? iBatisやMyBatisはORマッパーといわれるデータベースのレコードとJavaのクラスを結びつけるライブラリです。
k499778

2015/11/18 13:17

失礼しました。 PostgreSQLです。 GreenPlumとも言っていました。これもDWHだから違うのかな。 曖昧で申し訳ありません。
guest

回答3

0

ベストアンサー

実行するのはそのSQLを投げられたDBです。
A5:SQL Mk-2 はエディタですので、それの仕様でDBの挙動が変わることは無いと思います。
COALESCE(列名,' ')でシンタックスエラーも出ていないようですし、考えられるのは”NULL”という文字列がデータとして入っている場合などでしょうか?

投稿2015/11/18 13:20

hirohiro

総合スコア2068

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

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

k499778

2015/11/18 13:39

hirohiroさん 回答ありがとうございます。 勉強になります。 いえ、"NULL"という文字列ではないです。 データが入ってない空の状態のNULLです。 もし何かお分かりでしたらお願い致します。
guest

0

手元にPostgreSQLのサーバがないので、エラーが出てしまうかもしれませんが、

SELECT
(
CASE
WHEN列名 IS NULL THEN ''
ELSE 列名
END
);
でどうでしょう?

投稿2015/11/18 13:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

k499778

2015/11/18 13:11

jiu3bao3さん ありがとうございます。 私も今手元にないので明日このやり方で試してみます。 感謝しています。
guest

0

SQL Mk-2 で実際に接続しているDBは何でしょうか?

PostgreSQLにおけるNVL関数の代替手段

SELECT COALESCE(order_date," ") FROM sales;

ですね。

Oracle でしたら、
SELECT NVL(order_date," ") FROM sales;

SQL Mk-2 は使ったことがありませんが、NULLの扱いにきちんと対応できないのかもしれません。

以下はOracle での書き方ですが、
SQL> SET NULL null
SQL> SELECT 1 + NULL AS ANSWER FROM DUAL ;

ANSWER

null

と計算結果が想定外になってしまうので、NULLの扱いはきちんと勉強してください。

投稿2015/11/18 17:18

編集2015/11/18 22:07
Orlofsky

総合スコア16415

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問