HOMEへ
本HPはhttp://webyoutility.web.fc2.com/に移設しました!(現状7割)
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 TEST
	TO_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(列名)
列値の数を返します
*でデータの全行数を返します

 

SEO [PR] !uO z[y[WJ Cu