sql >> データベース >  >> RDS >> Mysql

パターンを使用した検索操作のためのMySQLでのLikeの使用

    このチュートリアルは、MySQLを使用した基本的なSQLクエリの学習シリーズの一部です。このチュートリアルでは、LIKE条件でWHERE句を使用してMySQLのテーブルデータに対して検索操作を実行するSQLクエリについて説明します。

    同様の条件

    いいね および好きではない 条件を使用して、指定したパターンを使用してテーブルデータの検索操作を実行できます。

    # LIKE - Syntax
    SELECT * FROM `table_name` WHERE `column_name` LIKE '<pattern>';

    # NOT LIKE - Syntax
    SELECT * FROM `table_name` WHERE `column_name` NOT LIKE '<pattern>';

    クエリの説明

    いいね 条件は、指定されたパターンを使用して特定の列を検索するために使用できます。 WHEREでLIKE条件を使用して、検索操作を実行できます。

    行を削除する資格を得るには、WHERE句を使用して少なくとも1つの条件を指定する必要があります。そうしないと、テーブル全体が消去されます。テーブルのすべての行が条件なしで削除されます。

    下記のワイルドカードをLIKE条件で使用して、検索結果を絞り込むことができます。

    パーセント(%) -ゼロ、1、または複数の文字を表します

    アンダースコア(_) -単一の文字を表します

    ESCAPEキーワードを使用して、検索結果にワイルドカードを含めることもできます。

    このセクションでは、WHERE句を指定したLIKE条件を使用して検索操作を実行する例を示します。以下のクエリを使用して、ID、名、姓、およびユーザーデータを格納するアクティブな列を持つユーザーテーブルを作成します。

    # Create the User Table
    CREATE TABLE `enterprise`.`user` (
    `user_id` BIGINT NOT NULL,
    `first_name` VARCHAR(45) ,
    `last_name` VARCHAR(45),
    `active` TINYINT(1) NOT NULL DEFAULT 0,
    PRIMARY KEY (`user_id`));

    下記のクエリを使用して、ユーザーテーブルにデータを挿入できます。

    # Insert Rows - All Columns
    INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
    ( 1, 'John', 'Smith', 1 ),
    ( 2, 'Rick', 'Jones', 1 ),
    ( 3, 'Catherine', 'Ponting', 0 ),
    ( 4, 'Harsh', 'Upadhyay', 1 ),
    ( 5, 'Tajwinder', 'Singh', 0 );

    上記のクエリは、5つの異なるユーザーを表すために、ID、名、姓、およびアクティブな列を持つ5つの行をテーブルに挿入します。

    次に、WHERE句でLIKE条件を使用して、ユーザーテーブルの名列または名列のいずれかを検索します。以下に示すように、MySQLのWHERELIKEを使用して実行できます。

    # LIKE - Exact search - Single Condition
    SELECT * FROM `user` WHERE `first_name` LIKE 'John';
    SELECT * FROM `user` WHERE `first_name` LIKE 'john';

    # Result
    1 John Smith 1


    # LIKE - Exact search - Multiple Conditions
    SELECT * FROM `user` WHERE `first_name` LIKE 'Rick' AND `last_name` LIKE 'Jones';

    # Result
    2 Rick Jones 1


    # NOT LIKE - Exact search - Single Condition
    SELECT * FROM `user` WHERE `first_name` NOT LIKE 'John';

    # Result
    2 Rick Jones 1
    3 Catherine Ponting 0
    4 Harsh Upadhyay 1
    5 Tajwinder Singh 0
     

    上記のクエリは、WHERELIKEと指定されたパターンを使用して正確な検索を実行します。 LIKE条件は、列の値と一致している間、大文字と小文字を無視します。大文字でも小文字でも同じ結果が得られます。

    次に、ワイルドカードを使用して、以下に示すように検索を実行します。

    # LIKE - % Wildcard search
    SELECT * FROM `user` WHERE `first_name` LIKE '%ine';

    # Result
    3 Catherine Ponting 0


    # LIKE - % Wildcard search
    SELECT * FROM `user` WHERE `first_name` LIKE 'Cat%in%';

    # Result
    3 Catherine Ponting 0


    # LIKE - % Wildcard search
    SELECT * FROM `user` WHERE `first_name` LIKE '%in%';

    # Result
    3 Catherine Ponting 0
    5 Tajwinder Singh 0


    # LIKE - _ Wildcard search
    SELECT * FROM `user` WHERE `first_name` LIKE '_ohn';

    # Result
    1 John Smith 1


    # LIKE - % & _ Wildcard search
    SELECT * FROM `user` WHERE `first_name` LIKE '_oh%';

    # Result
    1 John Smith 1

    以下のクエリは、LIKE条件でのESCAPEキーワードの使用法を説明しています。

    # Insert Rows - All Columns
    INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
    ( 6, 'Jo%hn', 'Waugh', 1 ),
    ( 7, 'Rick', 'Jones', 1 );

    # LIKE - ESCAPE - Exact search
    SELECT * FROM `user` WHERE `first_name` LIKE '%#%hn' ESCAPE '#';

    # Result
    6 Jo%hn Waugh 1

    これは、ワイルドカードがある場合とない場合のWHERE句でLIKE条件を使用して、指定されたパターンを使用して検索操作を実行する方法です。


    1. MySQLをSQliteに変換する

    2. Android用SQLCipherを使い始める方法は?

    3. MariaDBでのBINARY演算子のしくみ

    4. 15便利なMySQL/MariaDBパフォーマンスのチューニングと最適化のヒント