MySQL 区切り文字から指定した数だけ文字列を抽出する

MySQL 区切り文字から指定した数だけ文字列を抽出する

MySQLで、区切り文字から指定した数だけ文字列を抽出する手順を記述してます。

環境

  • OS ubuntu21.10
  • MySQL Ver 8.0.27-0ubuntu0.21.10.1 for Linux on x86_64 ((Ubuntu))
  • MySQL Workbench 8.0.27

手順

区切り文字から指定した数だけ文字列を抽出するには、「SUBSTRING_INDEX( )」を使用します。

SUBSTRING_INDEX( 文字列 , 開始位置, [文字数] )

実際に、抽出してみます。

SELECT 
SUBSTRING_INDEX( 'm,e,b,e,e', ',', 3 ),
SUBSTRING_INDEX( 'hello world !!', ' ', 2 )

実行結果を確認すると、指定した区切り文字で指定した文字数だけが抽出されていることが確認できます。

「0」を指定すると空が返ります。

SELECT 
SUBSTRING_INDEX( 'm,e,b,e,e', ',', 0 ),
SUBSTRING_INDEX( 'hello world !!', ' ', 0 )

実行結果

マイナスを指定

マイナスを指定すると、後ろから取得されます。

SELECT 
SUBSTRING_INDEX( 'm,e,b,e,e', ',', -3 ),
SUBSTRING_INDEX( 'hello world !!', ' ', -2 )

実行結果

数値を指定

数値を指定して実行することもできます。

SELECT 
SUBSTRING_INDEX( 121212, 2, 2 ),
SUBSTRING_INDEX( 101010, 0, 3 )

実行結果

サロゲートペア

サロゲートペア文字も、利用できます。

SELECT 
SUBSTRING_INDEX( '😻🙆😂🙆😀🙆🙍🙆', '🙆', 3 )

実行結果