LoginSignup
CoconaBayashi
@CoconaBayashi

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Oracle SQL 出力結果の文字列連結方法

解決したいこと

Oracle SQLで出力結果を文字列連結をしたい

【やりたいこと】
バッチでSQLを実行⇒csvとしてデータを保存
→そのために出力結果を「,(カンマ)」で連結したい

しかし、select句に関数を使用している場合、
||,||でカラム同士を繋ごうとすると「数式がありません」というエラーメッセージが出てしまう。

例)

Select
    SYOHIN_T.商品コード ||,||
    NVL(ZAIKO_T.現時点理論在庫数, 0) + NVL(ZAIKO_T.現時点預かり在庫数, 0)

⇒「式がありません。」

自分で試したこと

concatで繋ごうと思ったのですが、カラムが複数あるため
かなり入れ子が複雑になってしまいSQLが見にくくなるため、
||演算子を用いる方法はないかと思い質問しました。

ご存じの方ご教授お願いいたします。

0

1Answer

エラーの原因は、カンマが文字列になっていないことだと思います。

Select
-    SYOHIN_T.商品コード ||,||
+    SYOHIN_T.商品コード ||','||
    NVL(ZAIKO_T.現時点理論在庫数, 0) + NVL(ZAIKO_T.現時点預かり在庫数, 0)

また、クエリでカンマ区切りにせず、出力する際にカンマ区切りにしてCSVに出力するというやり方の方が一般的かなと思います。

いずれのやり方にせよ、以下のサイトが同様のことをしていたので参考になるかなと思います。

0

Comments

  1. @CoconaBayashi

    Questioner

    @YottyPG さん
    ご回答ありがとうございます。
    確かにカンマは文字列になっていませんでしたね。
    ご指摘ありがとうございます。
    ただ、アドバイスいただいた通り、||','||としても、
    「式がありません」というメッセージが出てしまい、意図した通りにはなりませんでした…

    出力する際にカンマ区切りにしてCSVに出力する方法で回避できました。
    SQLを実行するようなコマンドがあるなら出力方法を指定するようなオプションがあるのでは?と考えるべきでした。もっと勉強いたします…
    頂いたサイトも大変参考になりました。ありがとうございました。

Your answer might help someone💌