ページデータ抽出に関するSQLクエリの解析
データベースから特定のページを抽出するためのいくつかのSQLクエリが存在します。これらは、特定の条件を満たすページを選別するために使用されます。本稿では、四つの異なる条件でのページ抽出方法について詳しく解説します。
1. 半角中グロを含むページ
最初のクエリは、ページが半角中グロ「・」を含むかどうかを検証し、それに該当するタイトルを取り出します。以下のSQL文がこれに該当します。
```sql
SELECT cur_title FROM cur WHERE cur_is_redirect=0 AND cur_namespace=0 AND cur_text LIKE "%・%" LIMIT 0,200
```
このクエリでは、`cur` テーブルからリダイレクトされない、かつ名前空間が0のページを選び出します。また、テキスト中に指定した半角中グロを含むページが対象となります。最大200件までのタイトルが抽出されます。
2. 半角「」を含むページ
次に、半角カギ括弧「「」または「」」を含むページをリストアップするためのクエリがあります。これも前述の条件に従って抽出されます。
```sql
SELECT cur_title FROM cur WHERE cur_namespace=0 AND cur_is_redirect=0 AND (cur_text LIKE "%「%" OR cur_text LIKE "%」%") LIMIT 0,200
```
このクエリでも、リダイレクトされていないページを取得し、そのページ内にカギ括弧が含まれているものをフィルタリングしています。
3. 強調を含まないページ
次のクエリでは、強調表示が指定されていないページを抽出します。具体的には、リスト、削除依頼の無視を含むページを対象外にしています。
```sql
SELECT concat('
',cur_title,'') FROM cur WHERE cur_namespace=0 AND cur_is_redirect=0 AND cur_title NOT LIKE "%一覧%" AND cur_text NOT LIKE "%'''%" AND cur_text NOT LIKE "%<b>%" AND cur_text NOT LIKE "%sakujo%" AND cur_text NOT LIKE "%Copyrights%" AND cur_text NOT LIKE "%曖昧%" AND cur_text NOT LIKE "%aimai%" AND cur_text NOT LIKE "%delete%" ORDER BY cur_title
```
複数の条件を満たさないページが対象となり、それぞれの条件に合ったページタイトルがリスト化されます。
4. BRタグを含むページ
BRタグを含んだページを抽出するためのクエリもあります。このクエリでは、BRタグが含まれたテキストのページを取得しますが、特定の条件に基づきフィルタリングされています。
```sql
SELECT concat('
',cur_title,'') FROM cur WHERE cur_namespace=0 AND cur_is_redirect=0 AND (cur_text LIKE "%<BR%" OR cur_text LIKE "%<br%") AND cur_text NOT LIKE "%<table%<BR%</table%" AND cur_text NOT LIKE "%<TABLE%<BR%</TABLE%" AND cur_text NOT LIKE "%<table%<br%</table%" AND cur_text NOT LIKE "%<TABLE%<br%</TABLE%" AND cur_text NOT LIKE "%{|%<BR%|}%" AND cur_text NOT LIKE "%{|%<br%|}%" AND cur_text NOT LIKE "%{{%<BR%}}%" AND cur_text NOT LIKE "%{{%<br%}}%" ORDER BY cur_title
```
このクエリは、テキスト内にBRタグを含むページの中で、特定のHTML構造を持つものを除外しながら、タイトルを抽出します。
5. 短いページ
最後に、文字数が256バイト未満のページを取得するためのクエリです。このクエリによって、内容の短いページ一覧を得ることができます。
```sql
SELECT CONCAT('*
',cur_title,' (',LENGTH(cur_text),' byte)') FROM cur WHERE cur_namespace=0 AND cur_is_redirect=0 AND cur_text NOT LIKE "%aimai%" AND cur_text NOT LIKE "%sakujo%" AND cur_text NOT LIKE "%copyrights%" AND cur_text NOT LIKE "%delete%" AND LENGTH(cur_text) < 256 ORDER BY LENGTH(cur_text)
```
このクエリは、リダイレクトされていないページの中で、指定された条件に合う短いコンテンツを持つページタイトルと長さを表示します。
以上のように、いくつかのSQLクエリを利用して、データベースから特定の条件を満たすページを効率的に抽出することができます。これらのクエリを使用することにより、必要な情報をスムーズに取得できるでしょう。