SQL 特定の文字まで抽出とSUBSTRING関数の使い方と実践例

SQLで文字列から特定の部分を抽出する方法について、SUBSTRING関数やCHARINDEX関数の基本から実践的な使い方まで解説します。データベース処理で必要な文字列操作のスキルを身につけませんか?

SQL 特定の文字まで抽出する方法

SQLでの文字列抽出の基本
📝
SUBSTRING関数の活用

文字列から必要な部分を切り出すための基本関数

🔍
CHARINDEX関数との組み合わせ

特定の文字位置を検索して抽出範囲を指定

💡
実践的な活用例

ビジネスデータの加工や整形に役立つ具体例

SQL SUBSTRING関数の基本的な使い方

SUBSTRING関数は、文字列から特定の部分を抽出するための基本的な関数です。基本的な構文は以下の通りです:


SUBSTRING(文字列, 開始位置, 文字数)

 

具体的な使用例を見てみましょう:


-- 文字列の先頭から5文字を抽出
SELECT SUBSTRING('SQLデータベース', 1, 5) AS 抽出結果
-- 結果: 'SQLデ'
-- 3文字目から2文字分を抽出
SELECT SUBSTRING('プログラミング', 3, 2) AS 抽出結果
-- 結果: 'グラ'

SQL CHARINDEXを使った特定文字までの抽出方法

CHARINDEX関数と組み合わせることで、特定の文字までの部分を抽出できます。以下は実践的な例です:


-- メールアドレスからドメイン部分を抽出
SELECT SUBSTRING(
    'example@domain.com',
    CHARINDEX('@', 'example@domain.com') + 1,
    LEN('example@domain.com')
) AS ドメイン
-- 結果: 'domain.com'

SQL 文字列抽出の実践的なユースケース

ビジネスでよく使用される文字列抽出のパターンをご紹介します:


-- 電話番号から市外局番を抽出
DECLARE @phone VARCHAR(20) = '03-1234-5678'
SELECT SUBSTRING(@phone, 1, CHARINDEX('-', @phone) - 1) AS 市外局番
-- 商品コードから商品カテゴリを抽出
DECLARE @product_code VARCHAR(10) = 'ABC-12345'
SELECT SUBSTRING(
    @product_code,
    1,
    CHARINDEX('-', @product_code) - 1
) AS カテゴリコード

SQL 文字列抽出のパフォーマンス最適化

大量のデータを処理する際のパフォーマンスを考慮した実装方法です:


-- インデックスを活用した効率的な抽出
CREATE INDEX idx_column_name ON table_name(column_name)
-- 部分文字列の抽出を含むクエリの例
SELECT 
    SUBSTRING(column_name, 1, CHARINDEX('-', column_name) - 1)
FROM table_name
WHERE column_name LIKE 'PREFIX%'

SQL 文字列抽出の応用テクニック

より複雑な文字列操作のための応用テクニックです:


-- 複数の区切り文字がある場合の抽出
DECLARE @text VARCHAR(100) = '商品A|カテゴリB|価格1000'
SELECT 
    SUBSTRING(
        @text,
        CHARINDEX('|', @text) + 1,
        CHARINDEX('|', @text, CHARINDEX('|', @text) + 1) - CHARINDEX('|', @text) - 1
    ) AS カテゴリ
-- JSON形式のデータから特定の値を抽出
DECLARE @json VARCHAR(1000) = '{"name": "商品A", "price": 1000}'
SELECT 
    SUBSTRING(
        @json,
        CHARINDEX('"name":', @json) + 8,
        CHARINDEX('",', @json, CHARINDEX('"name":', @json)) - (CHARINDEX('"name":', @json) + 8)
    ) AS 商品名