🛠️ 組み込み関数(LEFT, RIGHT, SUBSTRINGなど)徹底解説
ここからは、データベース内のデータをより細かく、思い通りに加工・整形するために必要な「組み込み関数(Built-in Functions)」を学んでいきます。
特に今回は、文字列を扱うための文字列関数に焦点を当てます!
✂️ 第1章:文字列の切り出し(LEFT, RIGHT, SUBSTRING)
文字列の中から、特定の部分だけを取り出す(パースする)ための関数です。
【例題:Person.PersonテーブルのLastName列で試す】
SELECT
LastName, -- 元の姓
LEFT(LastName, 5) AS LeftFive, -- 左から5文字を切り出し
RIGHT(LastName, 5) AS RightFive, -- 右から5文字を切り出し
SUBSTRING(LastName, 3, 4) AS SubFromThree -- 3文字目から4文字を切り出し
FROM
Person.Person;
💡 ポイント:
切り出したい文字数(例:
5)が、元の文字列の長さより長い場合、エラーにはならず、元の文字列全体がそのまま返されます。
🔍 第2章:文字列を検索する(CHARINDEX)
特定の文字や文字列が、元の文字列のどこにあるか(何文字目か)を知りたいときに使います。
| 関数 | 役割 | 構文 |
| :--- | | :--- |
| CHARINDEX | 指定した部分文字列が、元の文字列の何番目に最初に出てくるかを返す。 | CHARINDEX(探したい文字列, 検索対象の文字列, [検索開始位置]) |
【例題:'Brewster'の中で 'R' がどこにあるか?】
SELECT
CHARINDEX('R', 'Brewster') AS FirstR, -- 2 が返る(最初の'R'は2文字目)
CHARINDEX('R', 'Brewster', 3) AS NextR; -- 8 が返る(3文字目から探し始めて最初の'R'は8文字目)
💡 ポイント:
もし探している文字列が見つからなかった場合、0が返されます。
この関数は、後でSUBSTRINGと組み合わせて使う(ネストする)と、非常に強力なデータの切り出しツールになります。
🗑️ 第3章:文字列の掃除(TRIM, UPPER, LOWER, LEN)
データの品質を向上させたり、長さを確認したりするための関数です。
【例題:文字列の長さを正確に測る】
SELECT
' T-SQL Class ' AS OriginalString,
LEN(' T-SQL Class ') AS LengthWithSpaces, -- 17 が返る(前後のスペースもカウントされる)
LEN(LTRIM(RTRIM(' T-SQL Class '))) AS LengthNoSpaces; -- 11 が返る(正しくカウントされる)
🧠 第4章:関数のネスト(入れ子)
関数のネストとは、ある関数の引数(パラメーター) の中に、別の関数を使うことです。これにより、複数の操作を一つのステップで実行できます。
ネストするときは、内側の関数から処理され、その結果が外側の関数の入力となります。
【例:L TRIMした文字列の長さを測る】
SELECT
LEN(LTRIM(' T-SQL Class')) AS CorrectLength;
内側 (
LTRIM(' T-SQL Class')) が実行され、'T-SQL Class'が生成される。外側 (
LEN(...)) が実行され、'T-SQL Class'の長さである11が返る。
このネストの技術は、SUBSTRINGとCHARINDEXを組み合わせて、動的にデータを切り出す応用編で真価を発揮します。
