7. MS SQL Built-in Function

 


🛠️ 組み込み関数(LEFT, RIGHT, SUBSTRINGなど)徹底解説

ここからは、データベース内のデータをより細かく、思い通りに加工・整形するために必要な「組み込み関数(Built-in Functions)」を学んでいきます。

特に今回は、文字列を扱うための文字列関数に焦点を当てます!


✂️ 第1章:文字列の切り出し(LEFT, RIGHT, SUBSTRING)

文字列の中から、特定の部分だけを取り出す(パースする)ための関数です。

関数役割構文
LEFT左(先頭) から指定した文字数分を切り出す。LEFT(文字列, 文字数)
RIGHT右(末尾) から指定した文字数分を切り出す。RIGHT(文字列, 文字数)
SUBSTRING任意の場所から指定した文字数分を切り出す。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)

データの品質を向上させたり、長さを確認したりするための関数です。

関数役割補足
LTRIM左側(先頭)空白を取り除く。💡 データの先頭に不要なスペースがある場合に便利。
RTRIM右側(末尾)空白を取り除く。
UPPER文字列をすべて大文字に変換する。
LOWER文字列をすべて小文字に変換する。
LEN文字列の長さ(文字数)を返す。💡 処理前に不要な空白をTRIMで取り除いておくと正確な長さが測れる。

【例題:文字列の長さを正確に測る】

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;
  1. 内側 (LTRIM(' T-SQL Class')) が実行され、'T-SQL Class' が生成される。

  2. 外側 (LEN(...)) が実行され、'T-SQL Class' の長さである 11 が返る。

このネストの技術は、SUBSTRINGCHARINDEXを組み合わせて、動的にデータを切り出す応用編で真価を発揮します。