0
Contents
関数
文字列に関する関数
LENGTH/LEN関数
文字列の長さを調べる関数。文字列の長さで絞り込みたいときは便利。
1 2 3 4 |
SELECT メモ, LENGTH(メモ) AS メモの長さ -- 「メモの長さ」という列名で、メモの文字列の長さを取得 FROM 家計簿 WHERE LENGTH(メモ) <= 10 -- 文字列の長さが10文字(10バイト)以下のモノを取得 |
ただ、はじめてのSQL①で出てきた「データ型」のCHAR型の場合は違った書き方もできる。
CHAR型のデータ型の場合は、例えばCHAR(10)と指定した場合は、10文字(バイト)以下の文字列に関しては、10文字(バイト)になるまで不足分を空白で埋めていくという特徴がある。なので、文字列が3文字の場合は、LENGTH関数を使った結果が「3」と出てきてほしいのに、空白部分が自動で入るので「10」になってしまう。こういったことをなくすために、空白を除去するTRIM関数がある。
1 2 3 |
SELECT メモ TRIM(メモ) AS 空白を除外したメモ FROM 家計簿 |
REPLACE関数
ある文字列を別の文字列に置換したいときに使う。
1 2 |
UPDATE 家計簿 SET メモ = REPLACE(メモ, '購入', '買った') -- メモ列の「購入」を「買った」に置換している |
SUBSTRING/SUBSTR関数
文字列の一部分だけ抽出したいときに使う
1 2 3 |
SELECT * FROM 家計簿 WHERE SUBSTRING(費目, 1, 3) LIKE '%費%' -- 費目列の1〜3文字目に「費」が含まれるものを抽出 |
CONCAT関数
文字列を連結するときに使う。
1 2 3 |
SELECT CONCAT(費目, ' : ', || メモ) -- 「費目:メモ」という形で取得できる FROM 家計簿 |
こんな感じでも使える
1 2 3 4 5 6 7 8 9 10 11 12 |
SELECT 日付, 費目, CASE WHEN LENGTH(メモ) >= 10 THEN SUBSTRING(メモ, 1, 10) || '...' ELSE メモ END AS メモ,入金額,出金額 FROM 家計簿 #解説 メモ列のうち、 10文字以上の文字列の場合(CASE文とLENGTH関数)、 10文字目まで表示して(SUBSTRING関数)、 それ以降は「...」で表示する(CONCAT関数)、 これらの条件に合致するものをメモとして取得(END AS メモ) |
数値に関する関数
ROUND関数
指定した位置で四捨五入したいときに使う
1 2 3 |
SELECT 出金額, ROUND(出金額, -2) AS 百円単位の出金額 -- 「-2」は出金額の下二桁という意味。 FROM 家計簿 |
TRUNC関数
指定した位置で切り捨てしたいときに使う
1 2 3 |
SELECT 出金額, TRUNC(出金額, -2) AS 10円単位で切り捨て -- 下二桁を切り捨て FROM 家計簿 |
1 |
SELECT 日付, TRUNC(テストの平均点/95.2, 0) AS 平均点 -- 切り捨てを「0」にすることで、小数点以下を切り捨て FROM 中間テスト |
POWER関数
2の2乗、2の3乗といった「べき乗」をしたいときに使う
1 |
SELECT POWER(3, 2) -- 3の2乗 |
日付に関する関数
CURRENT_DATE関数
今日の日付を知りたいときに使う。ちなみにCURRENT_TIMEであれば、現在の時間を知ることができる。
1 2 |
INSERT INTO 家計簿 VALUES(CURRENT_DATE, '食費', 'チョコ買った', 300) -- これで今日の日付を記録できる |
変換に関する関数
CAST関数
例えば、VARHAR型(文字列)の「1000」を、INTEGER型(数値)の「1000」に変換して計算したいとき等に使う
1 2 3 |
SELECT CAST('1000', AS INTEGER), -- 文字列「1000」を数値の「1000」に (1000, AS VARCHAR(10)) -- 数値の「1000」を文字列の「1000」に変換 |
COALESCE関数
複数の引数を受け取って、受け取った引数を左から順番に☑して、最初に見つかったNULLでない引数を返す
というちょっと変わった関数。テーブル内にNULLのデータがあるとデータ処理する時に困ることもあるので(結合する時とか)、そういったときに代替値を入れることができる。RailsとかだとModelに「null=false」として、予めNULLを禁止したりしてる。
1 2 3 4 |
SELECT 日付, 支出用途, COALESCE(メモ, '(メモはNULLの状態です)') AS メモ, -- メモ列のプロパティがNULLの場合、「(メモはNULLの状態です)」を入れるようにしている 収入,支出 FROM 家計簿 |
0