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 のサイドカーモードの詳細な説明

推薦する

タブ切り替え効果を実現するJavaScript

この記事では、タブ切り替え効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...

MySQL シリーズ 14 MySQL 高可用性実装

1. 内閣府マスターノードを監視することで、他のスレーブノードへの自動フェイルオーバーを実現できます...

MAC での MYSQL5.7.17 接続失敗の問題と解決策

MYSQL5.7.17 が MAC で接続できない問題。SQLBench_community 6.3...

MySQL で日付時刻データを取得し、その後に .0 を追加する方法

MySQL のデータ型は datetime です。データベースに保存されているデータは 2015-0...

グリッドはページのレイアウトプランです

<br /> 英語原文: http://desktoppub.about.com/od/...

見落とされがちなMETAタグの特殊効果(ページ遷移効果)

Web デザインで js を使用すると、多くのページ効果を実現できますが、HTML タグの META...

jQuery における Ajax の関連知識ポイントのまとめ

序文JavaScriptを学ぶ学生は、 AJAX (非同期JavaScriptとxml) 変換は非同...

Centos7 に yum を使用して MySQL をインストールし、リモート接続を実現する方法

Centos7はyumを使用してMySQLをインストールし、リモート接続を実現する方法です。MySQ...

ウェブデザインレイアウトの理解

<br />矛盾が生じます。私たちのような小さな工房では、デザインとレイアウトは基本的に...

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by 問題を解決する

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by の問題...

ウェブページを作るときに注意すべき5つのポイント

1. 色合わせの問題<br />Web ページには 3 色以上使用しないでください。そう...

Docker で既存のイメージに基づいて新しいイメージを構築する方法

既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...

WeChatアプレットが9マスグリッド効果を実現

この記事では、WeChatアプレットの9マスグリッド効果を実現するための具体的なコードを参考までに紹...

MySQL 悲観的ロックと楽観的ロックの実装

目次序文実際の戦闘1. ロックなし2. 悲観的ロック3. 楽観的ロック要約する序文悲観的ロックと楽観...

テーブル内の要素のドラッグと並べ替えの問題について簡単に説明します

最近、要素テーブルを使用すると、並べ替えの問題によく遭遇します。単純な並べ替えであれば、要素の公式が...