CHARINDEX 関数 - 文字列を検索する -

SQL-92/99   Oracle DB2 SQL Server MySQL PostgreSQL Access

CHARINDEX( 検索文字列, 検索対象文字列[, 位置 ] )


戻り値 : 検索文字列の開始位置または 0

 CHARINDEX 関数は、指定した検索対象文字列データから検索文字列を検索するときに使用します。 このとき、検索対象文字列に、検索文字列が含まれている場合には、最初に一致した開始位置が返されます。 また、位置を指定した場合には、指定した位置から検索されます。 なお、検索対象文字列に、検索文字列が含まれていない場合には、0 が返されます。

-- 【説明】
-- この SQL 文は、「T_22_1」表の「E_NAME」列の値から「ka」を検索します。 このとき、「E_NAME」列の値に「ka」が含まれている「ichiro.tanaka」の開始位置(12)、「tsukasa.motoyama」の開始位置(4)が返されます。 これ以外の「E_NAME」列の値には「ka」が含まれていないので(0)が返されることになります。

SELECT U_ID, E_NAME, CHARINDEX('ka', E_NAME) AS INDEX_KA FROM T_22_1;


U_IDE_NAMEINDEX_KA
u060120Daisuke Sato 0
u060121Koji Hayashihara 0
u062111tomoko ooki 0
u062122ichiro.tanaka 12
u063113Yuriko.Hukuda 0
u063125tsukasa.motoyama 4

-- 【説明】
-- この SQL 文は、上記の SQL 文と同様に、「T_22_1」表の「E_NAME」列の値から「ka」を検索します。 このとき、CHARINDEX 関数に位置が指定されているため、5 文字目以降に「ka」が含まれている「ichiro.tanaka」の開始位置(12)のみが返されます。
-- ここで注意することは、「tsukasa.motoyama」の開始位置(4)は、指定した位置より前に含まれるため、「tsukasa.motoyama」の開始位置は(0)が返されることになります。

SELECT U_ID, E_NAME, CHARINDEX('ka', E_NAME, 5) AS INDEX_KA FROM T_22_1;


U_IDE_NAMEINDEX_KA
u060120Daisuke Sato 0
u060121Koji Hayashihara 0
u062111tomoko ooki 0
u062122ichiro.tanaka 12
u063113Yuriko.Hukuda 0
u063125tsukasa.motoyama 0

参考表

T_22_1

U_IDK_NAMEE_NAMEADDRESSRANK_CODE
u060120佐藤大輔 Daisuke Sato 東京都 66
u060121林原浩二 Koji Hayashihara北海道 65
u062111大木智子 tomoko ooki 大阪府 67
u062122田中一郎 ichiro.tanaka 沖縄県 68
u063113福田百合子Yuriko.Hukuda 神奈川県 65
u063125本山司 tsukasa.motoyama千葉県 99999