MySQLのlike演算子の詳細

MySQLのlike演算子の詳細

1. はじめに

不明な値または部分的に既知の値をフィルタリングする場合は、like 演算子を使用できます。like 演算子は、あいまい一致に使用されます。

Like は 2 つのワイルドカードをサポートしています。

  • %ワイルドカード。複数の文字を一致させるために使用されます。
  • _文字。1文字に一致する場合に使用します。

ワイルドカードは、その位置に応じて 6 つの異なる方法で一致させることができます。

マッチング方法効果
%xx右一致を示します。右側の xx 文字は完全に同じである必要があります。左側は任意の文字または文字なしでもかまいません。
_xx右一致を示します。右側の xx 文字は完全に同じである必要があります。左側は任意の文字にすることができますが、文字である必要があります。
xx%左一致を示します。右側の xx 文字は完全に一致する必要があります。右側は任意の文字でも、文字なしでもかまいません。
xx_左一致を示します。左側の xx 文字は完全に一致する必要があります。右側は任意の文字にすることができますが、文字である必要があります。
%xx%中央一致を示します。中央は完全に等しくなければなりません。左側と右側には任意の文字を使用できます。左側と右側に他の文字を含めることはできません。
xx中央一致を示します。中央は完全に等しくなければなりません。左側と右側は任意の文字にすることができます。左側と右側は文字にする必要があります。

2. 本文

まず、User テーブルを準備します。DDL とテーブルデータは以下のとおりで、そのままコピーして使用できます。

名前を設定します utf8mb4;
FOREIGN_KEY_CHECKS = 0 を設定します。

-- ----------------------------
-- ユーザー用テーブル構造
-- ----------------------------
`user` が存在する場合はテーブルを削除します。
テーブル `user` を作成します (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主キー',
  `name` varchar(255) 文字セット utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'ユーザー名',
  `age` int(11) NOT NULL COMMENT '年齢',
  `sex` smallint(6) NOT NULL COMMENT '性別',
  BTREE を使用した主キー (`id`)
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- ユーザーの記録
-- ----------------------------
`user` に VALUES (1, '李子8', 18, 1) を挿入します。
INSERT INTO `user` VALUES (2, '张三', 22, 1);
`user` VALUES (3, '李四', 38, 1) に INSERT INTO します。
`user` VALUES (4, '王五', 25, 1) に INSERT INTO します。
INSERT INTO `user` VALUES (5, '六麻子', 13, 0);
`user` VALUES (6, '田七', 37, 1) に INSERT INTO します。
`user` VALUES (7, 'Thank you', 18, 1) に INSERT INTO します。

FOREIGN_KEY_CHECKS = 1 を設定します。
コピーされたコードデータの初期順序は次のとおりです。

mysql> ユーザーから * を選択します。
+----+--------+-----+-----+
| ID | 名前 | 年齢 | 性別 |
+----+--------+-----+-----+
| 1 | プラム 8 | 18 | 1 |
| 2 | 張三 | 22 | 1 |
| 3 | 李思 | 38 | 1 |
| 4 | 王武 | 25 | 1 |
| 5 | 劉麻子 | 13 | 0 |
| 6 | 天斉 | 37 | 1 |
| 7 | ありがとう | 18 | 1 |
+----+--------+-----+-----+
セット内の行数は 7 です (0.00 秒)

2.1 % ワイルドカード

% ワイルドカードには、 %xxxx%%xx%という 3 つのマッチング方法があります。以下では、これら 3 つの簡単な使用方法を説明します。

必要:

userテーブルで姓がZhangであるユーザーを照会する

声明:

mysql> select * from user where name like '张%';
+----+------+-----+-----+
| ID | 名前 | 年齢 | 性別 |
+----+------+-----+-----+
| 2 | 張三 | 22 | 1 |
+----+------+-----+-----+
セット内の 1 行 (0.00 秒)


必要:

userテーブルで名前が7で終わるユーザーをクエリする

声明:

mysql> select * from user where name like '%七';
+----+------+-----+-----+
| ID | 名前 | 年齢 | 性別 |
+----+------+-----+-----+
| 6 | 天斉 | 37 | 1 |
+----+------+-----+-----+
セット内の 1 行 (0.00 秒)

必要:

名前に「李」という文字が含まれるユーザーをuserテーブルで照会します。

声明:

mysql> select * from user where name like '%李%';
+----+--------+-----+-----+
| ID | 名前 | 年齢 | 性別 |
+----+--------+-----+-----+
| 1 | プラム 8 | 18 | 1 |
| 3 | 李思 | 38 | 1 |
+----+--------+-----+-----+
セット内の 2 行 (0.00 秒)


2.2 _ワイルドカード

_ワイルドカードと%ワイルドカードの違いは、_ は 1 つの文字のみに一致し、1 つの文字に一致する必要があるのに対し、% は複数の文字、さらには 0 文字に一致できることです。

必要:

姓がLiで名に中国語の文字が2つしかないユーザーをuserテーブルで照会する

声明:

mysql> select * from user where name like '李_';
+----+------+-----+-----+
| ID | 名前 | 年齢 | 性別 |
+----+------+-----+-----+
| 3 | 李思 | 38 | 1 |
+----+------+-----+-----+
セット内の 1 行 (0.00 秒)



必要:

ユーザーテーブル内の3という名前のuserをクエリする

声明:

mysql> select * from user where name like '_三';
+----+------+-----+-----+
| ID | 名前 | 年齢 | 性別 |
+----+------+-----+-----+
| 2 | 張三 | 22 | 1 |
+----+------+-----+-----+
セット内の 1 行 (0.00 秒)


必要:

名前が 3 つ "zi" で、2 番目の "zi" が "ma" であるユーザーをuserテーブルで照会します。

声明:

mysql> select * from user where name like '_麻_';
+----+--------+-----+-----+
| ID | 名前 | 年齢 | 性別 |
+----+--------+-----+-----+
| 5 | 劉麻子 | 13 | 0 |
+----+--------+-----+-----+
セット内の 1 行 (0.00 秒)


2.3 ワイルドカード使用時の注意事項

ワイルドカードは非常に強力で、多くの人が頻繁に使用していると思いますが、文字列の一致はそれほど高速ではないことがよくあります。したがって、ワイルドカードを使用する際にはいくつか留意すべき点があります。

  • 可能な限り使用しないという原則により、ワイルドカードによって発生するすべての問題を回避できるため、他の演算子を使用して検索できる場合は、LIKE を使用しないでください。
  • ワイルドカードを使用する場合は、検索範囲を絞り込んでください。検索条件が複数ある場合は、ワイルドカードを他のフィルター条件の後に配置できるかどうかを検討してください。
  • ワイルドカードの選択と位置に特に注意してください。 6 つのマッチング方法を参考にして、最適なものを選択してください。

MySQL like演算子の詳細に関するこの記事はこれで終わりです。MySQL の like 演算子の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Python の MySQL データベース LIKE 演算子の詳細な説明

<<:  React Router V6 のアップデート

>>:  Docker Compose のサイドカーモードの詳細な説明

推薦する

MySQL 8.0.15 のインストールと設定のグラフィックチュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

VUE uni-app でよく使用される API についての簡単な説明

目次1. ルーティングとページジャンプ2. インターフェース要約する1. ルーティングとページジャン...

Ubuntu 20.04 aptの国内ソースを変更する方法

UPD 2020.2.26 現在、Ubuntu 20.04 LTSはまだリリースされていないため、チ...

HTML チュートリアル: よく使われる HTML タグのコレクション (5)

関連記事:初心者が学ぶ HTML タグ (4)導入された HTML タグは、必ずしも XHTML 仕...

SpringBoot でマイクロサービスを構築するために Docker を使用した実際の記録を分析する

それは何ですか? Spring Boot は、Spring オープンソース組織のサブプロジェクトであ...

MySQL データベースを最適化する 8 つの方法の詳細な説明 (必読の定番)

導入:インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質に...

MySQLインデックスを追加する3つの原則を簡単に理解する

1. インデックスの重要性インデックスは、列に特定の値を持つ行をすばやく見つけるために使用されます。...

jQuery ステップ進行軸プラグインの実装コード

毎日のjQueryプラグイン - ステップ進捗軸 ステップ進捗軸ツール系のサイトでは入門チュートリア...

vite+vue3+element-plus プロジェクトをビルドする手順

viteを使用してvue3プロジェクトを構築するターミナルで次のコマンドを実行すると、Vite を使...

Ubuntuがネットワークに接続できない場合の解決策

仮想マシン内の Ubuntu がネットワークに接続できない場合の効果的な解決策: 1. Ubuntu...

jsネイティブカルーセルプラグインの制作

この記事では、jsネイティブカルーセルプラグインの具体的なコードを参考までに共有します。具体的な内容...

Linux システムが VMware にインストールされているかどうかを確認する方法

現在の Linux システムが VMware にインストールされているかどうかを確認する方法を教えて...

MySQLデータベースのマスタースレーブレプリケーションの長い遅延に対する解決策

序文MySQL マスター スレーブ レプリケーションの遅延は、業界では長年の問題となっています。遅延...

Docker用国産イメージウェアハウスの使い方

1. 問題の説明何らかの理由により、中国でのDockerイメージのダウンロード速度は特に遅くなります...

Nginx ポート競合を解決するトラブルシューティング方法の例

問題の説明データ転送に Nginx を使用し、フロントエンドとバックエンドが分離された Spring...