はじめに
テキスト文字列からテキストのセグメントを抽出するには、MySQLまたはMagic ETL DataFlowを使用します(Beast ModeでSUBSTRINGを使用する場合と同様です)。
MySQL DataFlowのサブストリング
MySQL DataFlowではSUBSTRING_INDEX()を使用して、テキストの文字列からテキストのセグメントを抽出できます。例えば、{"number":"91402","name":"Frodo"}を使用して番号や名前を抽出するとします。
SUBSTRING_INDEX(str,delim,count)を使用し、区切り文字delimのcountが出現する前にサブストリングstrを返します。countが正の値である場合、最後の区切り文字の左側にあるものすべて(左からカウントします)が返ります。countが負の値である場合、最後の区切り文字の右側にあるものすべて(右からカウントします)が返ります。SUBSTRING_INDEX()はdelimの検索時に大文字と小文字の区別が一致するかを確認します。
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -> 'www.mysql' mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -> 'mysql.com'
上記の例の場合...
,substring_index(substring_index(`data`, '"', 4),'"',-1) as ‘number’
,substring_index(substring_index(`data`, '"', 8),'"',-1) as ‘name’
Magic ETL DataFlowのサブストリング
Magic ETL DataFlowでSUBSTRINGアクションを実行するには、[テキストを置換]アクションを使用します。同じ列で2つの検索を行います。最初の検索では以下の正規表現を使います:
^.{X}
XはSUBSTRINGを開始する文字の数です。
次の検索には以下の正規表現を使います:
(?<=^.{Y}).+
Yは削除する文字の数です。
関数が機能するためには、歯車アイコンをクリックし、両方の検索ボックスで [RegEx を使用]を選択する必要があります。
以下に例を示します...
...SUBSTRINGアクションは位置0で開始され、7文字抽出します。
コメント
0件のコメント
サインインしてコメントを残してください。