トップDML文字列関数 ≫ 文字列の一部を取得する

文字列の一部を取得する

SQL中で文字列の一部を取得する関数としてSQL92/99ではSUBSTRING関数が定義されています.しかし,多くのDBMSは独自で同様の機能をもつ関数を用意しています.以下に各DBMSごとに使用可能な関数を示します.

DBMSSQL
AccessMid
MidB
SQLServerSUBSTRING
OracleSUBSTR
SUBSTRB
MySQLSUBSTRING
PostgreSQLSUBSTR

ここでは各DBMSごとに文字列の一部を取得する方法を紹介します.

Accessの場合

AccessはMid関数かMidB関数を使用します.

Mid(string, start[, length])
MidB(string, start[, length])

Mid関数は string で示す文字列の start から length 文字分文字列を取得します.
MidB関数は string で示す文字列の start から length バイト分文字列を取得します.
ここで start の先頭の位置は1から始まります.また,length は省略可能です.省略した場合は文字列の最後まで取得します.

SQLサンプル

Mid関数を使用して文字列の一部を取得する例を以下に示します.

SELECT Mid('チャーリーブラウン', 1, 5);

結果

Expr1000
チャーリー

SQLServerの場合

SQLServerはSUBSTRING関数を使用します.

SUBSTRING(string, start, length)

SUBSTRING関数は string で示す文字列の start から length 文字分文字列を取得します.ここで start の先頭の位置は1から始まります.

SQLサンプル

SUBSTRING関数を使用して文字列の一部を取得する例を以下に示します.

SELECT SUBSTRING('ルシール・ヴァン・ぺルト', 6, 3);

結果

Expr1000
ヴァン

Oracleの場合

OracleはSUBSTR関数かSUBSTRB関数を使用します.

SUBSTR(string, start[, length])
SUBSTRB(string, start[, length])

SUBSTR関数は string で示す文字列の start から length 文字分文字列を取得します.
SUBSTRB関数は string で示す文字列の start から length バイト分文字列を取得します.
ここで start の先頭の位置は1から始まります.また,length は省略可能です.省略した場合は文字列の最後まで取得します.

SQLサンプル

SUBSTR関数を使用して文字列の一部を取得する例を以下に示します.

SELECT SUBSTR('ルシール・ヴァン・ぺルト', 1, 4) AS 結果

結果

結果
ルシール

MySQLの場合

MySQLはSUBSTRING関数を使用します.

SUBSTRING(string, start[, length])
SUBSTRING(string FROM start [FOR length])

SUBSTRING関数は string で示す文字列の start から length 文字分文字列を取得します.ここで start の先頭の位置は1から始まります.また,length は省略可能です.省略した場合は文字列の最後まで取得します.FROMを使用する形式はSQL92/99に準拠した構文です.

SQLサンプル

SUBSTRING関数を使用して文字列の一部を取得する例を以下に示します.

SELECT SUBSTRING('スヌーピー' FROM 2 FOR 2) AS 結果

結果

結果
ヌー

PostgreSQLの場合

MySQLはSUBSTR関数を使用します.

SUBSTR(string, start[, length])

SUBSTR関数は string で示す文字列の start から length 文字分文字列を取得します.ここで start の先頭の位置は1から始まります.また,length は省略可能です.省略した場合は文字列の最後まで取得します.

SQLサンプル

SUBSTR関数を使用して文字列の一部を取得する例を以下に示します.

SELECT SUBSTR('スヌーピー', 2, 2) AS 結果

結果

結果
ヌー