グループセレクタの設定例:再帰クエリ #
タグ #
作者は長らくタグの存在を忘れていました(汗
これで少しは tag カラムが日の目を見られる…かもしれません。
タグは tag カラムに ; 区切りで格納されているため、再帰を行い文字列を分割します。
以下が設定例となります。
|
|
グループセレクタ抽出クエリ部の説明 #
|
|
詳細を説明できるほど精通していませんが、良く例題として示される再帰SQLです。
(Qiita や Stack Overflow で紹介された例を混ぜて簡素化したものです)
- 7行目の結果が splitテーブル と 抽出テーブル(最終結果用の内部テーブル) へ格納される
→ fld には空文字, remain にはtag末尾に;を付加したものが入る - 9~12行目の結果が一時テーブルに格納される
→ 1. の remain に入れた文字列を先頭から;の位置まで切り出して fld に格納
→ 切り出した分 remain を詰める - 一時テーブルが抽出テーブルへ結合される
- splitテーブルが一時テーブルに置き換えらる
- 一時テーブルが空になるまで 2.~ 繰り返される
要するに ; 区切りのキーワードを分割し、分割したキーワードが1行毎に抽出されます。
DISTINCT しているので、重複する文字列は纏められます。
ちなみに付属の設定ファイルにある
creator定義も同じ再帰SQLです。
違いは、creatorの定義では文字列先頭から[~]を除去しながら再帰しています。
アイテムリスト絞り込みクエリ部の説明 #
|
|
正確な絞り込みには正規表現が必要と思いましたが、
これも Stack Overflow に “ハッキーな方法” として紹介されていました。
比較元も比較先も ; で囲う方法です。
単純なセミコロン区切りである tag カラムはこれでイケると思います。
“正確な” とは、例えば あんぱん と 小倉あんぱん; を区別するケースです。
ちなみに正規表現を用いると以下のような感じになると思います。
REGEX 環境の例:
|
|
REGEXP 環境の例:
|
|
オマケ #
creator カラムも ; 区切りですが、[音楽]すぎやまこういち のように [~] が含まれているため、正確に分割してクリエイター名だけ切り出すのは困難です。
付属の設定ファイルにある定義方法は正確ではありません。
v0.91000 以前は組み込み処理により、正規表現DLLのインストール状況に応じて、regexが使える場合は以下のような正規表現を実行していました。正確さを求める場合は、自身が使用している正規表現DLL向けにクエリを書き換えてください。
REGEX 環境の例:
|
|
REGEXP 環境の例:
|
|