INSTR
CoddyのSQLジャーニー「応用」セクションの一部 — レッスン 8/27。
INSTR(haystack, needle) は、haystack 内での needle の1から始まるインデックス位置を返します。存在しない場合は 0 を返します。
INSTR('alice@example.com', '@') -- 6
INSTR('hello', 'z') -- 0SUBSTR と組み合わせることで、セパレータ(区切り文字)で文字列を分割することができます。メールアドレスの @ より前の部分を抽出するには、次のように記述します:
SUBSTR(email, 1, INSTR(email, '@') - 1)つまり、メールアドレスの1文字目から開始して、@の前にある文字数分だけ取得する、ということです。
チャレンジ
簡単利用可能なテーブルとカラム:
<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
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。