0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracleで文字列結合(連結演算子とCONCAT関数のどっちを使うのがよいかについても)

Last updated at Posted at 2023-02-04

概要

Oracleで文字列結合する方法としては…

  • ||(連結演算子)を使う。
  • CONCAT()を使う。

の2種類がある。

この記事では上記2種類のやり方と、『||(連結演算子)を使う』方がおススメなことについて記載。

やり方(連結演算子の||を使う)

動作確認用SQL

SELECT 

-- 2カラム結合。
カラム名1 || カラム名2 AS TWO_DAYO,

-- 3カラム結合。
-- 連結演算子の前後にスペースが無くてもOK。
カラム名1||カラム名2||カラム名3 AS THREE_DAYO,

-- 結合する要素内にNULLがある場合。
-- 下記の結果は『ちさとたきな』。
-- (どれか一つにNULLがあったとしても結合結果がNULLにはならない)
'ちさと' || NULL || 'たきな' AS NULL_ARUYO,

-- 文字列以外の数字や日付型を結合した時。
-- 下記の結果は『999と23-02-04』。
-- (2023年02月04日に実行した場合)
999||'と'||SYSDATE AS ANOTHER_DAYO

FROM テーブル名

連結演算子(||)のまとめ

  • CONCAT()に比べて、3つ以上の文字列を結合する時にSQLが煩雑にならない。
    (これが連結演算子をおススメする理由)
  • どれか一つにNULLがあったとしても、結合結果がNULLにはならない。
  • 数字や日付の型を結合しても例外にならない。

やり方(CONCAT関数を使う)

動作確認用SQL

SELECT 

-- 2カラム結合。
CONCAT(カラム名1, カラム名2) AS TWO_DAYO,

-- 3カラム結合。
-- 引数を2つしか渡せないので入れ子にする必要がある。
CONCAT(カラム名1, CONCAT(カラム名2, カラム名3)) AS THREE_DAYO,

-- 結合する要素内にNULLがある場合。
-- 下記の結果は『ちさとたきな』。
-- (どれか一つにNULLがあったとしても結合結果がNULLにはならない)
CONCAT('ちさと', CONCAT(NULL, 'たきな')) AS NULL_ARUYO,

-- 文字列以外の数字や日付型を結合した時。
-- 下記の結果は『999と23-02-04』。
-- (2023年02月04日に実行した場合)
CONCAT(999, CONCAT('と', SYSDATE)) AS ANOTHER_DAYO

FROM テーブル名

CONCAT()に3つ以上の引数を渡すと下記文言で例外。

ORA-00909: 引数の個数が無効です

CONCAT関数のまとめ

  • 3つ以上の文字列を結合する時にSQLが煩雑になる。(入れ子)
  • どれか一つにNULLがあったとしても、結合結果がNULLにはならない。
  • 数字や日付の型を結合しても例外にならない。

バージョン

Oracle Database 11g Release 11.2.0.1.0 - 64bit Production

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?