Oracle SQL関数

SQL関数とは、データベースの問い合わせ言語であるSQLから利用できる関数です。この記事では、OracleデータベースにおけるSQL関数の使い方を紹介しています。

ASCII

引数に渡された文字をASCIIコードに変換して、戻り値として返す。

ASCII
DBMS ASCII
MySQL
Oracle
PostgreSQL
SQL Server
ASCII(char)
char
文字
SELECT character, ASCII(character) FROM example
character ASCII(character)
A 65
B 66
C 67

CHR

引数に渡されたASCIIコードを文字に変換して、戻り値として返す。

CHR
DBMS CHR CHAR
MySQL
Oracle
PostgreSQL
SQL Server
CHR(number)
number
数値(ASCIIコード)

CONCAT

引数に渡された文字列を結合して、戻り値として返す。

CONCAT
DBMS CONCAT
MySQL
Oracle
PostgreSQL
SQL Server
CONCAT(string1, string2)

DECODE

DECODE
DBMS DECODE
MySQL
Oracle
PostgreSQL
SQL Server

MySQL にも DECODE という名前の関数があるが、これは暗号を複合化するための関数である、Oracle の DECODE 関数とは用途が違う。

DECODE(expr, condition1, value1, condition2, value2...)
DECODE(expr, condition1, value1, condition2, value2..., default)
expr
評価する式。列名や関数など。
condition
条件値
value
条件値に一致した場合にDECODE関数の戻り値となる値
default
いずれの条件値にも一致しなかった場合にDECODE関数の戻り値となる値。default を省略した場合はnull。

INITCAP

引数に渡された文字列の先頭文字を大文字に変換して、戻り値として返す。

INITCAP
DBMS INITCAP
MySQL
Oracle
PostgreSQL
SQL Server
INITCAP(string)

INSTR

文字列から部分文字列を検索し、現れた位置を示す数値を戻す。

INSTR
DBMS INSTR
MySQL
Oracle
PostgreSQL
SQL Server
INSTR(string, substring)
INSTR(string, substring, position)
INSTR(string, substring, position, occurrence)
string
検索対象となる文字列
substring
検索する部分文字列
position
検索を開始する位置。省略した場合はデフォルト値である1が設定される。
occurrence
部分文字列が表れる回数。省略した場合はデフォルト値である1が設定される。

string中のpositionの位置から検索して、substringoccurrence番目に現れた位置を示す数値。指定条件で現れなかった場合は0を戻す。

INSTRB

文字列内に含まれる部分文字列を検索して、その先頭位置をバイト値で返す。

INSTRB
DBMS INSTRB
MySQL
Oracle
PostgreSQL
SQL Server
INSTRB(string, substring, position, occurrence)
string
検索対象の文字列
substring
検索する部分文字列
position
検索開始位置
occurrence
検索序数

検索対象文字列内に部分文字列が含まれない場合は、戻り値として 0 を返す。

LOWER

引数に渡された文字列に含まれる大文字を小文字に変換した文字列を戻す。DBMS によっては、半角文字だけでなく、全角文字も小文字に変換する。

LOWER
DBMS LOWER LCASE
MySQL
Oracle
PostgreSQL
SQL Server
LOWER(string)
SELECT ename, LOWER(ename) FROM emp
ename LOWER(ename)
Tsukamoto Hiroyuki tsukamoto hiroyuki

LTRIM

文字列の左側(先頭)にある空白を削除する。

LTRIM
DBMS LTRIM
MySQL
Oracle
PostgreSQL
SQL Server
LTRIM(string)

MOD

MODは剰余(割り算の余り)を返す関数である。

MOD
DBMS MOD
MySQL
Oracle
PostgreSQL
SQL Server
MOD(n1, n2)

n1n2で割った余りを戻り値として返す。

MOD関数を使用したSQL文の例を示す。

SQL> SELECT MOD(12, 5) FROM DUAL;

MOD(12,5)
----------
         2

SQL> SELECT MOD(12, 6) FROM DUAL;

MOD(12,6)
----------
         0

SQL>

RTRIM

文字列の右側(末尾)にある空白を削除する。

RTRIM
DBMS RTRIM
MySQL
Oracle
PostgreSQL
SQL Server
RTRIM(string)

SUBSTR

SUBSTRは、文字列の一部を切り出すSQL関数である。

SUBSTR
DBMS SUBSTR
MySQL
Oracle
PostgreSQL
SQL Server
SUBSTR(文字列, 開始位置)
SUBSTR(文字列, 開始位置, 文字数)

開始位置を後ろから(右から)指定するには、負の数を指定する。

SUBSTR関数の使用例を示す。

SELECT name, SUBSTR(name, 2), SUBSTR(name, -2) FROM students;
name SUBSTR(name, 2) SUBSTR(name, -2)
SATO NEO ATO NEO EO
佐藤愛桜 藤愛桜 愛桜
SELECT name, SUBSTR(name, 1, 2) FROM students;
name SUBSTR(name, 1, 2)
SATO NEO SA
佐藤愛桜 佐藤

SUBSTRB

文字列charの中から、start番目から始まる長さlengthの文字列を抜き出して戻す。SUBSTRとは異なり、文字数ではなくバイト数で指定する。

SUBSTRB
DBMS SUBSTRB
MySQL
Oracle
PostgreSQL
SQL Server
SUBSTRB(char, start)
SUBSTRB(char, start, length)
char
文字列
start
charから文字列を抜き出す開始位置。startが負の場合、charの終わりから逆方向に数えた位置を表す。
length
抜き出すバイト数。省略した場合、charの最後まで抜き出す。

TRIM

文字列から指定した文字列を削除する。

TRIM
DBMS TRIM
MySQL
Oracle
PostgreSQL
SQL Server

文字列から半角スペースを削除する

TRIM(string)

指定した文字列を削除する。

TRIM(delete, FROM string)

UPPER

文字列stringに含まれる文字をすべて大文字に変換した文字列を戻す。

UPPER
DBMS UPPER UCASE
MySQL
Oracle
PostgreSQL
SQL Server
UPPER(string)
string
大文字にする文字列
SELECT ename, UPPER(ename) FROM emp
ename UPPER(ename)
Tsukamoto Hiroyuki TSUKAMOTO HIROYUKI