MySQLでフィールドの一部を切り出した結果をSELECTする

言葉で表現するとわかりづらいので、図で表すと、以下のようなことをしたい。

WHERE条件に 「where col2 like ‘%まみむめもやゆよ%’」 のような条件を指定してSELECTしたとき、該当するフィールド全体ではなく、(キーワードを含む)一部分の文字列だけを取得したいということ。

いろいろやり方はあるかもしれないが一つの例として、MySQLの場合instr関数とsubstring関数を組み合わせれば実現可能。

SQLの例

select
    substring(col2, instr(col2, 'まみむめもやゆよ'), 20)
from
    table1
where
    col2 like '%まみむめもやゆよ%';

一応、使っている関数についてのメモ。

instr関数

第一引数に与えた文字列の中でから、第二引数で与えた文字列が最初に出現する位置を返す関数。

今回の例では、WHERE句で与えた条件に該当する文字列を切り出しの開始位置にしたいので、このような指定をしている。

https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_instr

substring関数

文字列の一部(部分文字列)を返す関数。第一引数は切り出す対象の文字列で、第二引数は切り出しの開始位置、第三引数は切り出す文字数の指定。

今回の例では、先にinstr関数で求めた切り出しの開始位置から、20文字分を切り出す、という指定をしている。

https://dev.mysql.com/doc/refman/5.6/ja/string-functions.html#function_substring

コメント

タイトルとURLをコピーしました