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 結果
結果
| 結果 |
|---|
| ヌー |