SQL中で文字列の一部を取得する関数としてSQL92/99ではSUBSTRING関数が定義されています.しかし,多くのDBMSは独自で同様の機能をもつ関数を用意しています.以下に各DBMSごとに使用可能な関数を示します.
DBMS | SQL |
---|---|
Access | Mid |
MidB | |
SQLServer | SUBSTRING |
Oracle | SUBSTR |
SUBSTRB | |
MySQL | SUBSTRING |
PostgreSQL | SUBSTR |
ここでは各DBMSごとに文字列の一部を取得する方法を紹介します.
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はSUBSTRING関数を使用します.
SUBSTRING(string, start, length)
SUBSTRING関数は string で示す文字列の start から length 文字分文字列を取得します.ここで start の先頭の位置は1から始まります.
SQLサンプル
SUBSTRING関数を使用して文字列の一部を取得する例を以下に示します.
SELECT SUBSTRING('ルシール・ヴァン・ぺルト', 6, 3);
結果
Expr1000 |
---|
ヴァン |
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は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 結果
結果
結果 |
---|
ヌー |
MySQLはSUBSTR関数を使用します.
SUBSTR(string, start[, length])
SUBSTR関数は string で示す文字列の start から length 文字分文字列を取得します.ここで start の先頭の位置は1から始まります.また,length は省略可能です.省略した場合は文字列の最後まで取得します.
SQLサンプル
SUBSTR関数を使用して文字列の一部を取得する例を以下に示します.
SELECT SUBSTR('スヌーピー', 2, 2) AS 結果
結果
結果 |
---|
ヌー |