かっちゃんのプログラミング奮闘記

このブログは、僕がプログラミング学習をしていく上で、知識のインプットを図るためのアウトプット場所として活用している場所です。

【SQL】関数や計算式を使う時に関すること

この記事では、関数に関することや、計算式の扱い方などについてアウトプットしていきます。

SELECT文で計算式を使う場合

SELECT文では、真偽を返す条件式以外に、計算結果を返す計算式を使うこともできる。

○計算式(例)
出金額 + 100 = 出金額に+100された金額が返される
SELECT 出金額,          -- 列名
       出金額 + 100,    -- 計算式
       'SQL'           -- 固定値
  FROM 家計簿

f:id:kazuki13070311:20210831223907p:plain

この様に、計算式をSELECT文の中に入れても戻り値で計算結果が返ってくる。

ただし、このままだと列名が「出金額+100」となんか不格好な名前になっているので、「AS」を使ってもっと分かりやすい名前に再定義すると良い。

「AS」とは?

ASを使用すると、列名やテーブル名を違う名称に変更することができる。

使い方は「AS + 任意のキーワード」で変更できる。

SELECT 出金額, 
       出金額 + 100 AS 百円増しの出金額,
       'SQL'
  FROM 家計簿

f:id:kazuki13070311:20210831224721p:plain
ASで変更した後の表

INSERT文で計算式を使う場合

INSERT INTO 家計簿(出金額)
       VALUES (1000+105)

=> 出金額の行に1105が追加される

UPDATE文で計算式を使う場合

 UPDATE 家計簿
    SET 出金額 = 出金額+100

=> 出金額+100された計算結果が出金額に格納される(変更される)

DBMSの処理の原則

DBMSはテーブル内の表の各行1つづつ、上から順番に1 行づつ(1つづつ)評価して処理していくので、計算式なども1行づつ毎回計算される。

関数

関数の呼び出しに指定した情報を「引数」と言い、その引数をその後に処理(加工)をして、処理されて返ってきた結果の情報を「戻り値」という。

f:id:kazuki13070311:20210831230332p:plain
関数呼び出し後の動きイメージ図

関数の呼び出し方

関数名(引数・・・)

・LENGTH関数を使った例

SELECT メモ, LENGTH(メモ) AS メモの長さ
  FROM 家計簿

※LENGTH関数は、受け取っとた引数の文字数を戻り値として返す関数

f:id:kazuki13070311:20210831231937p:plain

TRIM関数(空白を除去する)

TRIM関数は引数の空白を除去して返してくれる関数。

ある文字列の前後にある余計な空白を除去したい時にTRIM関数を使うと除去してくれる。

他にもLTRIM関数やRTRIM関数などがある。

・TRIM関数  ・・・ 前後の空白を除去する
・LTRIM関数 ・・・ 左側の空白を除去する
・RTRIM関数 ・・・ 右側の空白を除去する

Rubyの「strip」メソッドと同じ

Rubyではstripメソッドを使用することで、文字列の空白を除去してくれる。

ただし、stripメソッドは「全角の空白」は除去してくれないので、全角の空白を除去したい時は、正規法を使って半角へ変換したのちに除去する。

全角空白を半角に変更する方法

Rubyの「gsub」メソッドを使うことで、変更することができる。

ただし、stripメソッドはgsubメソッドで全角空白→半角空白へ変換した後に実行する様に、後ろにstripメソッドを持ってくる様にする。

str.gusb(//," ").strip