SQL講座 | ||
---|---|---|
DBとは | ||
基本構文 | 演算子 | SQL関数 |
SETコマンド |
単一行関数
文字関数
■LOWER(列名)
指定した文字列を全て小文字に変換する■UPPER(列名)
指定した文字列を全て大文字に変換する■INITCAP(列名)
指定した文字列の先頭文字を大文字にし、残りを全て小文字に変換する。■CONCAT(列名1,列名2)
1番目に指定した文字列と2番目に指定した文字列を結合するSELECT CONCAT(salary , 'YEN') CONCAT(salary , 'YEN') ---------------------- 5000YEN
■SUBSTR(列名,m,n)
列値のm番目からn文字分抜き出して戻す ※nは省略できます■LENGTH(列名)
文字数を戻す■INSTR(列名,'文字列')
列値から指定した文字列が何文字目に含まれるかを戻す■LPAD(列名,n,'文字列')
列値の文字列がnバイトになるまで指定された'文字列'で埋めるNAME LPAD(NAME,10,'*') ---- ----------------- name ****SUZUKI
■RPAD(列名,n,'文字列')
列値の文字列がnバイトになるまで指定された'文字列'で文字列の右側を埋めるNAME RPAD(NAME,10,'*') ---- ----------------- name SUZUKI****
■TRIM([LEADING | TRAILING | BOTH] '削除文字列', FROM '文字列')
文字列の先頭から指定した削除文字列を削除して戻す指定 | 内容 |
---|---|
LEADING | 先頭 |
TRAILING | 末尾 |
BOTH | 先頭 AND 末尾 |
■REPLACE('文字列','置換前文字列','置換後文字列')
指定した文字列を置換前文字列を置換後文字列に置換する数値関数
■ROUND(列名,n)
指定した列値を小数点以下n桁で四捨五入して戻す■TRUNC(列名,n)
指定した列値を小数点,n桁で切り捨てる■MOD(m,n)
mをnで割った余りを戻す日付関数
■SYSDATE
現在の日付と時刻を戻す■MONTHS_BETWEEN(日付1,日付2)
日付1から日付2を引いた下数を戻す ※日数部分は小数点で表示■ADD_MOJNTHS(日付,n)
日付データにn月分加算する■NEXT_DAY(日付,'曜日データ')
指定した日付以降に訪れる曜日データ(WEDなど..)の曜日の日付を戻す■LAST_DAY(日付)
指定した日付の月の最終日を戻す■ROUND(日付,'書式')
指定した日付を指定した書式に四捨五入して戻す■TRUNC(日付,'書式')
指定した日付を指定した書式に切り捨てて戻す変換関数
場合によっては文字列型→日付型などに暗黙的データ変換を勝手に実行する事ができます。しかしデータベースの件数が増加するにつれて、暗黙的データ変換を行うと処理が遅くなります。
そのため、処理の高速化を考えた場合は下記の変換関数を使用しましょう。
■TO_CHAR(日付or数値データ[,'文字書式'])
指定した日付または数値データを文字データに変換する■TO_NUMBER(文字データ[,'数値書式'])
指定した文字データを数値データに変換する■TO_DAYS(文字データ[,'日付書式'])
指定した文字データを日付データに変換する関数日付書式モデル
書式モデル | 内容 |
---|---|
YYYY | 年号 |
SYYYY | 紀元前の場合-表示 |
YYY , YY , Y | 年号の下3桁、2桁、1桁 |
IYYY , IYY , IYまたはI | ISO企画に基づいた年号を4,3,2,1,桁表示 |
YEAR or SYEAR | 年号を英字つづりで表示(-表示) |
BC or AD | 年号の前にBC,AD表示 |
cc or scc | 世紀を数字で表示(-表示) |
Q | 四半期の番号表示(1,2,3,4) |
MM | 月を2桁で表示 |
MONTH | 月を名前で表示 |
MON | 月を省略形で表示 |
RM | 月をローマ字で表示 |
WW | 1年の何週目か表示 |
W | 1ヶ月の何週目か表示 |
DDD | 元日から数えて何日目かを表示 |
DD | 日にちを2桁表示 |
D | 曜日を番号表示(1-7) |
DAY | 曜日を名前で表示 |
DY | 曜日を省略系表示 |
HH or HH12 | 時間を12時間形式で表示 |
MI | 分数を表示 |
SS | 秒数を表示 |
SSSSS | 午前0時から経過した秒数 |
AM or PM | 時間にAM,PM表示 |
A.M. or P.M. | 時間にA.M. or P.M.で表示 |
その他日付書式モデル
■ /
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD')■ .
SELECT TO_CHAR(SYSDATE,'YYYY.MM.DD')■'文字列'
SELECT TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日"') FROM TESTTO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日"') -------------------------------------- 2007年12月20日
■TH
数字に序数(TH or ND)を付加して表示■fm
数字の先頭に0がある場合、0を非表示する■9
SELECT TO_CHAR(5678 , '9999')数値データを9の個数分表示
■0
SELECT TO_CHAR(5678,'09999')先頭にゼロを表示する
■B
SELECT TO_CHAR(0 , 'B9999')値がゼロの場合、空白を表示する
■L
SELECT TO_CHAR(1234 , 'L9999')通貨記号を表示(日本は¥)
一般関数
■NVL(列名 , 変換後の値)
指定されたデータ(列名など)がNULL値の場合、指定した値に変換する■NVL2(列名 , 値1 , 値2)
指定されたデータ(列名など)がNULL値でない場合は値1を、NULL値の場合は値2に変換する■NULLIF(列名1 , 列名2)
指定した値(列名1,列名2など)が等しいかどうかを比較し、同じ場合にはNULL値を、異なる場合には1つ目に指定した値を返す■COALESCE(列名1 , 列名2 , …)
指定された値のうち、NULL値でないはじめの値を戻す ※NULL値でない値が出て句たらその時の値を戻す条件式
■CASE文
式が条件式1の値ならば戻り値1、条件式2の値ならば戻り値2…どの条件にも当てはまらなければ戻り値3を返す
CASE 式 WHEN 条件式1 THEN 戻り値1 [ WHEN 条件式2 THEN 戻り値2 … ELSE 戻り値3 ] END
■DECODE文
列名または式が条件式1の値であれば戻り値1、 条件式2の値であれば戻り値2…どの条件にも当てはまらなければ戻り値3を返す
DECODE( 列名 , 条件式1 , 戻り値1 [, 条件式2 , 戻り値2 … , 戻り値3 ] )
グループ関数
■AVG(列名)
列値の平均値を返します■SUM(列名)
列値の合計値を返します■MIN(列名)
列値の最小値を返します■MAX(列名)
列値の最大値を返します■COUNT(列名)
列値の数を返します*でデータの全行数を返します