MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでオートコンプリート用にレコードを取得する方法:学校名の部分一致検索

MySQLでオートコンプリートにレコードを表示する方法

オートコンプリート機能を実装する際、MySQLではLIKE句を使用して部分一致するレコードを取得できます。ここでは学校名を例に、複数のキーワードに同時に一致するレコードを抽出する方法を解説します。

サンプルテーブルの作成

まず、テーブルを作成しましょう。

mysql> create table DemoTable
(
    SchoolName varchar(100)
);
Query OK, 0 rows affected (0.56 sec)

レコードの挿入

INSERT文を使ってテーブルにデータを追加します。

mysql> insert into DemoTable values('Horce Greeley');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('Conestoga Senior');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Adlai E.Stevenson');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Thomas Jefferson');
Query OK, 1 row affected (0.07 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみます。

mysql> select *from DemoTable;

実行結果は以下のとおりです。

+-------------------+
| SchoolName        |
+-------------------+
| Horce Greeley     |
| Conestoga Senior  |
| Adlai E.Stevenson |
| Thomas Jefferson  |
+-------------------+
4 rows in set (0.00 sec)

オートコンプリート用の検索クエリ

複数のキーワード(例:「Con」と「Sen」)の両方を含むレコードを取得するには、LIKE句をAND条件で組み合わせます。

mysql> select *from DemoTable where SchoolName LIKE '%Con%' and SchoolName LIKE '%Sen%';

実行結果:

+------------------+
| SchoolName       |
+------------------+
| Conestoga Senior |
+------------------+
1 row in set (0.00 sec)

このように、「Conestoga Senior」のように複数の単語から構成される名前でも、各キーワードごとのLIKE条件をANDで連結することで、語順に関係なく柔軟な部分一致検索が可能になります。ユーザーが入力した途中の文字列から候補を絞り込むオートコンプリート機能の実装において、非常に有用なテクニックです。

  1. MySQLで日付データから月の初日と末日を取得する方法

    MySQLでは、日付型のカラムから「その月の最初の日」と「最後の日」を簡単に求めることができます。この記事では、実際にテーブルを作成し、サンプルデータを使いながら具体的な手順を解説します。1. テーブルの作成まず、日付を格納するためのテーブルを作成します。mysql> create table DemoTable -> ( -> DueDate date -> ); Query OK, 0 rows affected (0.73 sec)2. レコードの挿入次に、INSERT文を使ってテーブルにいくつかのレコードを挿入します。mysql>

  2. MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法

    はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036