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.

やんわり現場メモ#2【Oracle編】

Last updated at Posted at 2023-07-06

はじめに

初心者エンジニアということで優しい目で見てください。
(間違っていたら直したいので教えてください)
今回は参画先現場でSQLを使用する際に、新たな関数や注意点についてになります。

目次

●初めて見たやつ
・DECODE
・列名 IN (1,2,3,...)
・ROWNUM
・LPAD(列名 ,桁数 ,追加する文字)
●勘違い/混同していたこと
・CASE文の書き方
・SUBSTRの文字指定
・= NULLではなく、IS NULL

初めて見たやつ

DECODE

条件分岐に使用する。
現場ではDECODEにしてくださいと一度指示が出たが、処理速度の問題でCASE文に変更になった。

構文/例文
-- 構文
DEOCDE(列名,'比較対象1','返す値1','比較対象2','返す値2',....'その他')

-- 例文
DECCODE(sample.color,'red','赤','blue','青','緑')
-- sampleテーブルのcolor列が、「red」なら「赤」、「blue」なら「青」、その他なら「緑」を返す。
列名 IN (1,2,3,...)

条件を絞るときに使う。
特定の列で多くの値を指定する際に楽。

例文
SELECT * FROM sample WHERE key_no IN ('1','2','3');
-- sampleテーブルのkey_no列が、「1」「2」「3」のレコードを取得する。
ROWNUM

勝手にレコードに採番してくれてるやつ
単体テストの際、データが数千レコードあったが100レコードの確認でよかったので使った。

例文
SELECT * FROM sample WHERE ROWNUM <= 100;
-- sampleテーブルのレコードを100行取得する。

order by で並び替えてから採番させたい場合サブクエリで並び替えたレコードを取得してからROWNUMで絞り込むと指定した順番通りで出力される

例文
SELECT * FROM (SELECT * FROM sample ORDER BY key_no;) WHERE ROWNUM <= 100;
-- sampleテーブルのレコードをkey_noの順番で100行取得する。
LPAD(列名 ,桁数 ,追加する文字)

左側に指定した文字を指定した桁数追加する。
レコードによって桁が違っているものをそろえるのに使った。

例文
SELECT LPAD(branch_no,4,0) FROM sample;
-- sampleテーブルのbranch_no列が、4桁になるように左側に「0」を追加してbranch_no列を取得する。

勘違い/混同していたこと

CASE文の書き方

間違えではなかったけど、めんどくさい書き方になっていた。

例文
-- 自分
CASE
    WHEN sample.color = 'red' THEN '赤'
    WHEN sample.color = 'blue' THEN '青'
    ELSE '緑'
END;
-- 簡単に
CASE sample.color
    WHEN 'red' THEN '赤'
    WHEN 'blue' THEN '青'
    ELSE '緑'
END;
SUBSTRの文字指定

全体の文字数目~全体の文字数目という書き方で間違えてしまっていた

構文/例文
-- 構文
SUBSTR('文字列','全体の何文字目から','何文字目まで切り抜くか')

-- defを切り抜きたい場合
-- 誤
SUBSTR('abcdef','4','6') 
-- 正
SUBSTR('abcdef','4','3') 
= NULLではなく、IS NULL

普通に勘違いしてた

例文
-- 誤
CASE
    WHEN sample.flg = NULL THEN '無'
    ELSE '有'
END;
-- 正
CASE
    WHEN sample.flg IS NULL THEN '無'
    ELSE '有'
END;
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?