$ man substring
SUBSTRING
文字列関数文字列の一部を切り出す。開始位置は 1 から数える。
呼び出しの形
SUBSTRING(文字列 FROM 開始位置 FOR 長さ) SUBSTRING(文字列, 開始位置, 長さ) LEFT(文字列, 長さ) RIGHT(文字列, 長さ)
つまずきやすいところ
開始位置は 1 からです。0 から数える言語に慣れていると 1 文字ずれます。
長さを省略すると末尾までです。文字列より長い長さを指定してもエラーにはなりません。
LEFT/RIGHTは標準 SQL ではありません。Oracle には無く、SUBSTRを使う必要があります。
実行例
結果は実際に流したものです。同じ SQL を 自由に打てる画面 で試すと、同じ結果になります。
SELECT shohin_name, SUBSTRING(shohin_name FROM 1 FOR 2) AS hyoujun, SUBSTRING(shohin_name, 1, 2) AS kanryaku, LEFT(shohin_name, 2) AS hidari FROM shohin ORDER BY shohin_id
| shohin_name | hyoujun | kanryaku | hidari |
|---|---|---|---|
| ノート | ノー | ノー | ノー |
| ボールペン | ボー | ボー | ボー |
| 付箋 | 付箋 | 付箋 | 付箋 |
| デスクチェア | デス | デス | デス |
| 書棚 | 書棚 | 書棚 | 書棚 |
| デスクライト | デス | デス | デス |
| キーボード | キー | キー | キー |
7 行
SELECT category, LEFT(category, 1) AS atama, RIGHT(category, 1) AS oshiri, SUBSTRING(category FROM 2) AS ni_moji_me_kara FROM shohin ORDER BY shohin_id
| category | atama | oshiri | ni_moji_me_kara |
|---|---|---|---|
| 文具 | 文 | 具 | 具 |
| 文具 | 文 | 具 | 具 |
| 文具 | 文 | 具 | 具 |
| 家具 | 家 | 具 | 具 |
| 家具 | 家 | 具 | 具 |
| 家電 | 家 | 電 | 電 |
| 家電 | 家 | 電 | 電 |
7 行
説明
SUBSTRING は文字列の一部を切り出します。開始位置は 1 から数えます(0 からではありません)。
書き方が 2 通りあります。FROM ... FOR ... を使うのが標準 SQL の形で、カンマ区切りは多くの製品が受け付ける短い形です。
先頭や末尾から取るだけなら LEFT / RIGHT のほうが読みやすくなります。コードの上 2 桁で分類する、といった用途によく使います。
⚠️ 長さを省略すると末尾まで取ります。また、文字列より長い長さを指定してもエラーにはならず、あるところまでが返ります。
次に読む
使い方を順に読むなら
根拠にした一次情報
- PostgreSQL 18 マニュアル: 文字列関数と演算子(2026-09-02 確認)