Menu
Coddy logo textTech

INSTR

CoddyのSQLジャーニー「応用」セクションの一部 — レッスン 8/27。

INSTR(haystack, needle) は、haystack 内での needle の1から始まるインデックス位置を返します。存在しない場合は 0 を返します。

INSTR('alice@example.com', '@')   -- 6
INSTR('hello', 'z')               -- 0

SUBSTR と組み合わせることで、セパレータ(区切り文字)で文字列を分割することができます。メールアドレスの @ より前の部分を抽出するには、次のように記述します:

SUBSTR(email, 1, INSTR(email, '@') - 1)

つまり、メールアドレスの1文字目から開始して、@にある文字数分だけ取得する、ということです。

challenge icon

チャレンジ

簡単

利用可能なテーブルとカラム:

  • <strong>signups</strong>: <strong>id</strong>, <strong>email</strong>

id と各メールのドメイン@ 以降のすべて)を domain として返してください。すべてのメールアドレスに @ がちょうど1つ含まれていると仮定してください。id で並べ替えてください。

チートシート

INSTR(haystack, needle) は、haystack 内の needle の 1 から始まる位置を返します。見つからない場合は 0 を返します:

INSTR('alice@example.com', '@')   -- 6
INSTR('hello', 'z')               -- 0

セパレータで文字列を分割するには、SUBSTR と組み合わせて使用します:

-- '@' より前の部分
SUBSTR(email, 1, INSTR(email, '@') - 1)

-- '@' より後の部分
SUBSTR(email, INSTR(email, '@') + 1)

自分で試してみよう

SELECT id,
       -- '@' 以降のすべて
FROM signups
ORDER BY id
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

応用のすべてのレッスン