記入日:2023-02-18 編集日:2023-02-18
SQL見るだけクエリ。今回は全国12万件の郵便番号データのテーブルから、
addressカラムに、佐藤または佐々木の文字が含まれているレコードを取得してみようと思います。
正規表現を使って検索する必要がありますので REGEXP演算子を活用しようと思います。
この記事を読むと(約5分)
12万件程度のデータから、正規表現を使って指定の文字を含む物を取得する方法を知る事ができます。
postal_codeというテーブルを準備しています。
このテーブルには全国12万件の郵便番号情報が保存されています。
addressカラムには、市区町村以下の文字が保存されています。
さていつもの様に、テーブルの情報を取得するSQLに関して、注目する部分は、以下の9~10行目のみです。
SELECT postal7, pref, city, address FROM postal_code
WHERE address REGEXP "佐藤|佐々木"
この部分でaddressカラムに、佐藤または佐々木の文字が含まれているレコードを取得しています。
REGEXP演算子を使って、
// addressカラムの中で文字列に、佐藤もしくは佐々木 を含むもの address REGEXP "佐藤|佐々木"
を取得条件(WHERE )にしております。
try {
include_once '../model/class.php';
// データベース接続
$database = new Database();
$db = $database->connect();
// SQLを準備し、パラメータをバインドする SELECT * FROM tab1 WHERE emp_name REGEXP 'Suzu|Kiza';
$query = 'SELECT postal7, pref, city, address FROM postal_code
WHERE address REGEXP "佐藤|佐々木"';
$stmt = $db->prepare($query);
// 実行する
$stmt->execute();
// 結果を取得する
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
// データベースから切断する
$database->disconnect();
} catch(PDOException $e) {
echo $e->getMessage();
}
これを実行すると、二次元連想配列で、取得することができます。
Array
(
[0] => Array
(
[postal7] => 9451354
[pref] => 新潟県
[city] => 柏崎市
[address] => 佐藤池新田
)
[1] => Array
(
[postal7] => 9570082
[pref] => 新潟県
[city] => 新発田市
[address] => 佐々木
)
[2] => Array
(
[postal7] => 9593121
[pref] => 新潟県
[city] => 村上市
[address] => 佐々木
)
[3] => Array
(
[postal7] => 9230821
[pref] => 石川県
[city] => 小松市
[address] => 佐々木町
)
[4] => Array
(
[postal7] => 4300807
[pref] => 静岡県
[city] => 浜松市中区
[address] => 佐藤
)
[5] => Array
(
[postal7] => 4400853
[pref] => 愛知県
[city] => 豊橋市
[address] => 佐藤
)
[6] => Array
(
[postal7] => 4400853
[pref] => 愛知県
[city] => 豊橋市
[address] => 佐藤町
)
[7] => Array
(
[postal7] => 4440936
[pref] => 愛知県
[city] => 岡崎市
[address] => 上佐々木町
)
[8] => Array
(
[postal7] => 4440935
[pref] => 愛知県
[city] => 岡崎市
[address] => 下佐々木町
)
[9] => Array
(
[postal7] => 6200901
[pref] => 京都府
[city] => 福知山市
[address] => 上佐々木
)
[10] => Array
(
[postal7] => 6200908
[pref] => 京都府
[city] => 福知山市
[address] => 下佐々木
)
[11] => Array
(
[postal7] => 6200909
[pref] => 京都府
[city] => 福知山市
[address] => 中佐々木
)
[12] => Array
(
[postal7] => 6680325
[pref] => 兵庫県
[city] => 豊岡市
[address] => 但東町佐々木
)
[13] => Array
(
[postal7] => 6450011
[pref] => 和歌山県
[city] => 日高郡みなべ町
[address] => 気佐藤
)
[14] => Array
(
[postal7] => 7160113
[pref] => 岡山県
[city] => 高梁市
[address] => 成羽町佐々木
)
[15] => Array
(
[postal7] => 7711342
[pref] => 徳島県
[city] => 板野郡上板町
[address] => 佐藤塚
)
[16] => Array
(
[postal7] => 7618023
[pref] => 香川県
[city] => 高松市
[address] => 鬼無町佐藤
)
[17] => Array
(
[postal7] => 7800954
[pref] => 高知県
[city] => 高知市
[address] => 佐々木町
)
[18] => Array
(
[postal7] => 7871604
[pref] => 高知県
[city] => 四万十市
[address] => 西土佐藤ノ川
)
)
| postal7 | pref | city | address |
|---|---|---|---|
| 9451354 | 新潟県 |
柏崎市 |
佐藤池新田 |
| 9570082 | 新潟県 |
新発田市 |
佐々木 |
| 9593121 | 新潟県 |
村上市 |
佐々木 |
| 9230821 | 石川県 |
小松市 |
佐々木町 |
| 4300807 | 静岡県 |
浜松市中区 |
佐藤 |
| 4400853 | 愛知県 |
豊橋市 |
佐藤 |
| 4400853 | 愛知県 |
豊橋市 |
佐藤町 |
| 4440936 | 愛知県 |
岡崎市 |
上佐々木町 |
| 4440935 | 愛知県 |
岡崎市 |
下佐々木町 |
| 6200901 | 京都府 |
福知山市 |
上佐々木 |
| 6200908 | 京都府 |
福知山市 |
下佐々木 |
| 6200909 | 京都府 |
福知山市 |
中佐々木 |
| 6680325 | 兵庫県 |
豊岡市 |
但東町佐々木 |
| 6450011 | 和歌山県 |
日高郡みなべ町 |
気佐藤 |
| 7160113 | 岡山県 |
高梁市 |
成羽町佐々木 |
| 7711342 | 徳島県 |
板野郡上板町 |
佐藤塚 |
| 7618023 | 香川県 |
高松市 |
鬼無町佐藤 |
| 7800954 | 高知県 |
高知市 |
佐々木町 |
| 7871604 | 高知県 |
四万十市 |
西土佐藤ノ川 |
SQLの使いどころ
サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。
SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。
また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。
KK
機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。