HISA -NET




ABS
  
ABSは、nの絶対値を戻す

SQL> SELECT ABS(+1) FROM DUAL;

   ABS(+1)
----------
         1

SQL> SELECT ABS(-1) FROM DUAL;

   ABS(-1)
----------
         1
  
ADD_MONTHS
  
ADD_ MONTHSは、日付dにnか月を加えて戻す
引数nには、任意の整数を指定できる
dが月の最終日の場合、または結果の月の日数がdの日付コンポーネントよりも
少ない場合、戻される値は結果の月の最終日となる
それ以外の場合、結果は dと同じ日付コンポーネントを持つ

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
--------
02-10-28

SQL> SELECT ADD_MONTHS(SYSDATE,1) FROM DUAL;

ADD_MONT
--------
02-11-28

SQL> SELECT ADD_MONTHS('02-11-30',1) FROM DUAL;

ADD_MONT
--------
02-12-31

ADD_MONTH(日付型,n)     日付にnか月を加算
  
ASCII
  
ASCIIは、charの最初の文字のデータベース・キャラクタ・セットでの
10進表記を戻す

データベース・キャラクタ・セットが7ビットのASCIIの場合、
この関数は ASCII値を戻す
データベース・キャラクタ・セットがEBCDICコードの場合、
この関数は EBCDIC値を戻す
この関数と一致する EBCDIC文字関数は存在しません

SQL> SELECT ASCII('A') FROM DUAL;

ASCII('A')
----------
        65
  
AVG
  
平均値を返す

SELECT AVG(列名) FROM 表名;
  
CEIL
  
指定値以上の最も小さい整数値を返す

SQL> SELECT CEIL(0.5) FROM DUAL;

 CEIL(0.5)
----------
         1
  
CHR
  
等しい2進数をもつ文字を返す
改行なら

SQL> SELECT 'A' || CHR(10) || 'B'FROM DUAL;

'A'||C
------
A
B
  
CONCAT
  
文字列の連結

SQL> SELECT CONCAT('A','B') FROM DUAL;

CONC
----
AB
  
DECODE
  
ifのような制御

DECODE(比較元,比較値1,真の返り値1,偽の返り値1)

SQL> SELECT DECODE(1,1,2,3) FROM DUAL;

DECODE(1,1,2,3)
---------------
              2

SQL> SELECT DECODE(1,2,2,3) FROM DUAL;

DECODE(1,1,2,3)
---------------
              3
  
FLOOR
  
指定値以下の最も大きい整数値を返す

SQL> SELECT FLOOR(1.5) FROM DUAL;

 FLOOR(1.5)
----------
         1
  
GREATEST
  
比較の値(複数指定可能)の最大値を返す

SQL> SELECT GREATEST(1,2,3) FROM DUAL;

GREATEST(1,2,3)
---------------
              3

SQL> SELECT GREATEST('A','B','C') FROM DUAL;

GR
--
C

SQL> SELECT GREATEST('A','B','C','AA','BB','CC') FROM DUAL;

GREA
----
CC
  
INITCAP
  
最初の文字を大文字に

SQL> SELECT INITCAP('abcdefg') FROM DUAL;

INITCAP('ABCDE
--------------
Abcdefg
  
INSTR/INSTRB
  
文字列を指定の文字列で検索し、出現位置を返す
INSTRは文字数
INSTRBはバイト数として返す

SQL> SELECT INSTR('abcdefg','efg') FROM DUAL;

INSTR('ABCDEFG','EFG')
----------------------
                     5

SQL> SELECT INSTR('あいうえお','う') FROM DUAL;

INSTR('あいうえお','う')
------------------------
                       3

SQL> SELECT INSTRB('あいうえお','う') FROM DUAL;

INSTR('あいうえお','う')
------------------------
                       5

SQL> SELECT INSTRB('あaいbうcえdおe','う') FROM DUAL;

INSTRB('あAいBうCえDおE','う')
------------------------------
                             7
  
LAST_DAY
  
月の最後の日を返す

SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
--------
02-10-28

SQL> SELECT LAST_DAY(SYSDATE) FROM DUAL;

LAST_DAY
--------
02-10-31
  
LEAST
  
比較の値(複数指定可能)の最小値を返す

SQL> SELECT LEAST(1,2,3) FROM DUAL;

LEAST(1,2,3)
------------
           1
  
LENGTH/LENGTHB
  
LENGTH:長さを文字数で返す
LENGTHB:長さをバイト数で返す

SQL> SELECT LENGTH('abcdef') FROM DUAL;

LENGTH('ABCDEF')
----------------
               6

SQL> SELECT LENGTH('あいうえお') FROM DUAL;

LENGTH('あいうえお')
--------------------
                   5

SQL> SELECT LENGTHB('あいうえお') FROM DUAL;

LENGTHB('あいうえお')
---------------------
                   10
  
LOWER
  
小文字で返す

SQL> SELECT LOWER('ABCDEFG') FROM DUAL;

LOWER('ABCDEFG
--------------
abcdefg
  
LPAD
  
文字列の左に指定文字を連続的にセットしたうえ、指定桁数にして返す

SQL> SELECT LPAD('c',15,'12') FROM DUAL;

LPAD('C',15,'12')
------------------------------
12121212121212c

指定桁数があふれる場合は、その時点まで

SQL> SELECT LPAD('c',16,'12') FROM DUAL;

LPAD('C',16,'12')
--------------------------------
121212121212121c

※2バイト文字が混在する場合:指定桁数はバイト数

SQL> SELECT LPAD('c',4,'あいう') FROM DUAL;

LPAD('C'
--------
 あc
  
LTRIM
  
左側の空白を取り除く

SQL> SELECT LTRIM('   abcdefg') FROM DUAL;

LTRIM('ABCDEFG
--------------
abcdefg

左側の指定文字'a'を取り除く

SQL> SELECT LTRIM('abcdefg','a') FROM DUAL;

LTRIM('ABCDE
------------
bcdefg
  
MAX
  
最大値を返す
SELECT MAX(列名) FROM 表名;
  
MIN
  
最小値を返す
SELECT MIN(列名) FROM 表名;
  
MOD
  
余りを返す

SQL> SELECT MOD(3,2) FROM DUAL;

  MOD(3,2)
----------
         1
  
MONTHS_BETWEEN
  
日付間の月数を戻す
小数部は1ヶ月31日として計算する

SQL> SELECT MONTHS_BETWEEN(TO_DATE('02-02-2002','MM-DD-YYYY'),
                           TO_DATE('01-01-2002','MM-DD-YYYY')) BETWEEN_M FROM DUAL;

 BETWEEN_M
----------
1.03225806
  
NEXT_DAY
  
指定した日付以降で、指定した曜日の次の日付を返す

SQL> SELECT NEXT_DAY(TO_DATE('2002-10-28','YYYY-MM-DD'),'金') FROM DUAL;

NEXT_DAY
--------
02-11-01
  
NVL
  
指定した値がNULLのとき、代わりに指定した値を返す

SELECT NVL(列1,列2) FROM 表名;

SQL> SELECT NVL('','ABC') FROM DUAL;

NVL(''
------
ABC

SQL> SELECT NVL('123','ABC') FROM DUAL;

NVL('1
------
123
  
NVL2
  
NVLと原理は同じだが、引数を3つまで指定可能

1つめ NULL 3つめを返す

SQL> SELECT NVL2('','ABC','!?') FROM DUAL;

NVL2
----
!?

1つめ NULLでない 2つめを返す

SQL> SELECT NVL2('123','ABC','!?') FROM DUAL;

NVL2
----
ABC
  
POWER
  
指定した値をn乗する

SQL> SELECT POWER(2,2) FROM DUAL;

POWER(2,2)
----------
         4
  
ROUND(数値関数)
  
四捨五入する
0が小数点位置となり、整数は小数点位を表し、マイナスは整数位を表す

1指定→少数1位まで求める=2位を四捨五入

SQL> SELECT ROUND(123.456,1) FROM DUAL;

ROUND(123.456,1)
----------------
           123.5

0指定→整数部まで求める=1位を四捨五入

SQL> SELECT ROUND(234.567,0) FROM DUAL;

ROUND(234.567,0)
----------------
             235

-1指定→十の位まで求める=一の位を四捨五入

SQL> SELECT ROUND(345.678,-1) FROM DUAL;

ROUND(345.678,-1)
-----------------
              350
  
ROUND(日付関数)
  
指定した書式に丸めた結果を返す

SQL> SELECT ROUND(TO_DATE('2002-OCT-01'),'YEAR') "Nex Year" FROM DUAL;

Nex Year
--------
03-01-01
  
RTRIM
  
右側の空白を取り除く

SQL> SELECT '|' || RTRIM('abcdefg   ') || '|'FROM DUAL;

'|'||RTRIM('ABCDEF
------------------
|abcdefg|

右側の指定文字'a'を取り除く

SQL> SELECT RTRIM('abcdefg','g') FROM DUAL;

RTRIM('ABCDE
------------
abcdef
  
REPLACE
  
指定した値を指定した文字に置き換える

SQL> SELECT REPLACE('ABCDEFG','A','X') FROM DUAL;

REPLACE('ABCDE
--------------
XBCDEFG

SQL> SELECT REPLACE('ABCDEFG','AB','XY') FROM DUAL;

REPLACE('ABCDE
--------------
XYCDEFG
  
RPAD
  
指定した長さまで指定した文字を連続的に埋め込みその値を返す

SQL> SELECT RPAD('123',10,'ABC') FROM DUAL;

RPAD('123',10,'ABC')
--------------------
123ABCABCA

SQL> SELECT RPAD('123',10,'あいう') FROM DUAL;

RPAD('123',10,'あい
--------------------
123あいう
  
SUBSTR/SUBSTRB
  
SUBSTRは、指定値のm番目の文字からn文字分の文字列を抜き出して戻す

SQL> SELECT SUBSTR('ABCDEFG',3,4) FROM DUAL;

SUBSTR('
--------
CDEF

mが負の場合、指定値の終りから数える

SQL> SELECT SUBSTR('ABCDEFG',-3,2) FROM DUAL;

SUBSTR
------
EF

SUBSTRBは、指定値のm番目の文字からnバイト分の文字列を抜き出して戻す

SQL> SELECT SUBSTRB('あいうえお',3,4) FROM DUAL;

SUBSTRB(
--------
いう

  
SUM
  
指定値の合計を返す

SELECT SUM(列名) FROM 表名;
  
SYSDATE
  
ローカル・データベース上の日時を戻す

SQL> SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL;

TO_CHAR(SYSDATE,'YYYY/MM/DDHH24:MI:SS'
--------------------------------------
2002/10/29 09:44:21
  
TO_CHAR(日付変換)
  
DATE型をVARCHAR2型に変換

SQL> SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL;

TO_CHAR(SYSDATE,'YYYY/MM/DDHH24:MI:SS'
--------------------------------------
2002/10/29 09:44:21
  
TO_CHAR(数値変換)
  
NUMBER型をVARCHAR2型に変換

SQL> SELECT TO_CHAR(123.456) FROM DUAL;

TO_CHAR(123.45
--------------
123.456
  
TO_DATE
  
CHAR、VARCHAR2型をDATE型に変換

SQL> SELECT TO_DATE('2002/10/31') FROM DUAL;

TO_DATE(
--------
02-10-31
  
TO_NUMBER
  
CHAR、VARCHAR2型をNUMBER型に変換

SQL> SELECT TO_NUMBER('123.456') FROM DUAL;

TO_NUMBER('123.456')
--------------------
             123.456
  
TRANSLATE
  

TRANSLATE(指定値,FROM値,TO値) 

from内のすべての文字をto内の対応する文字に置換してcharを戻す

「1」は「A」
「2」は「B」
「3」は「C」
「4」は「D」
「5」は「E」に変換さる
よって「123」は「ABC」となる

SQL> SELECT TRANSLATE('123','12345','ABCDE') FROM DUAL;

TRANSLATE(
----------
ABC


「1」は「1」
「2」は「2」
「3」は「3」
「4」は「4」
「5」は「5」
「A」は「」(NULL)
「B」は「」(NULL)
「C」は「」(NULL)
「D」は「」(NULL)
「E」は「」(NULL)に変換される

SQL> SELECT TRANSLATE('12345ABCDE','12345ABCDE','12345') FROM DUAL;

よって「12345ABCDE」は「12345」となる

TRANSLATE(
----------
12345
  
TRIM
  
指定文字を切り捨てる
LEADING		先行文字を切り捨てる
TRAILING		後続文字を切り捨てる
BOTH		両方を切り捨てる
何も指定しない	両方を切り捨てる

指定文字がない場合は空白を切り捨てる

SQL> SELECT TRIM(LEADING  '0' FROM '0123450')" TRIM Example" FROM DUAL;

 TRIM Exampl
------------
123450

SQL> SELECT TRIM(TRAILING '0' FROM '0123450')" TRIM Example" FROM DUAL;

 TRIM Exampl
------------
012345

SQL> SELECT TRIM(BOTH     '0' FROM '0123450')" TRIM Example" FROM DUAL;

 TRIM Exam
----------
12345
  
TRUNC(数値関数)
  
指定した位で切り捨てる

SQL> SELECT TRUNC(123.456,1) FROM DUAL;

TRUNC(123.456,1)
----------------
           123.4		←少数第一位まで求める

SQL> SELECT TRUNC(123.456,0) FROM DUAL;

TRUNC(123.456,0)
----------------
             123		←整数部まで求める

SQL> SELECT TRUNC(123.456,-1) FROM DUAL;

TRUNC(123.456,-1)
-----------------
              120		←十の位まで求める
  
TRUNC(日付関数)
  
指定した位で切り捨てる

SQL> SELECT TRUNC(TO_DATE('2002/10/31','YYYY/MM/DD'),'YEAR') FROM DUAL;

TRUNC(TO
--------
02-01-01
  
UID/USER
  
UID:ログインしているユーザを一意に識別する値を返す
USER:ログインしているユーザを返す

SQL> SELECT USER,UID FROM DUAL;

USER       UID
--------- ----
SYSTEM      27
  
UPPER
  
大文字で返す

SQL> SELECT UPPER('abcdefg') FROM DUAL;

UPPER('abcdefg
--------------
ABCDEFG
  
VSIZE
  
内部表現でのバイト数を返す

SQL> SELECT VSIZE('123') FROM DUAL;

VSIZE('123')
------------
           3