«Это 18-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
1. Введение
Сопоставление регулярных выражений поддерживается в MySQL.В сложных условиях фильтрации вы можете рассмотреть возможность использования регулярных выражений. Чтобы использовать регулярные выражения, вам необходимо освоить синтаксис регулярных выражений и инструкции. Xiaoba рекомендует адрес для обучения и онлайн-инструмент. Прежде чем научиться использовать регулярные выражения в MySQL, узнайте о синтаксисе и инструкциях регулярных выражений.
URL для обучения регулярным выражениям:
WOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OFF.COM/RE-XP/HOT SONG ...
Онлайн-тест регулярного выражения:
Стоит отметить, что регулярные выражения, поддерживаемые MySQL, являются лишь подмножеством множества реализаций регулярных выражений, и перед их использованием рекомендуется протестировать их.При тестировании нет необходимости сначала создавать таблицу и вставлять данные.Вы можете напрямую использовать select, чтобы опустить предложение формы и обработать выражения удобным способом, например следующим образом:
mysql> select '我爱你中国' regexp '我爱你';
+------------------------------+
| '我爱你中国' regexp '我爱你' |
+------------------------------+
| 1 |
+------------------------------+
mysql> select '12306' regexp '[:digit:]';
+----------------------------+
| '12306' regexp '[:digit:]' |
+----------------------------+
| 1 |
+----------------------------+
2. Текст
Сначала подготовьте таблицу продуктов.DDL и данные таблицы следующие, которые можно копировать и использовать напрямую.
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for product
-- ----------------------------
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`product_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '产品名称',
`price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '产品价格',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of product
-- ----------------------------
INSERT INTO `product` VALUES (1, 'Apple iPhone 13 (A2634)', 6799.00);
INSERT INTO `product` VALUES (2, 'HUAWEI P50 Pro', 6488.00);
INSERT INTO `product` VALUES (3, 'MIX4', 4999.00);
INSERT INTO `product` VALUES (4, 'OPPO Find X3', 3999.00);
INSERT INTO `product` VALUES (5, 'vivo X70 Pro+', 5999.00);
SET FOREIGN_KEY_CHECKS = 1;
Исходные данные выглядят так:
mysql> select * from product;
+----+-------------------------+---------+
| id | product_name | price |
+----+-------------------------+---------+
| 1 | Apple iPhone 13 (A2634) | 6799.00 |
| 2 | HUAWEI P50 Pro | 6488.00 |
| 3 | MIX4 | 4999.00 |
| 4 | OPPO Find X3 | 3999.00 |
| 5 | vivo X70 Pro+ | 5999.00 |
+----+-------------------------+---------+
2.1 Порядок выписки
Роль регулярных выражений заключается в сопоставлении текста. Использование регулярного выражения для сравнения с текстовым содержимым позволяет проверить, соответствует ли текст правилам, описанным регулярным выражением.В MySQL регулярные выражения используются в предложении where для фильтрации данных запроса на выборку.
select * from table_name where regexp "ваше регулярное выражение" order by cloumn_name;
нужно:
Запросите продукт, название продукта которого содержит 3 в таблице продуктов
Заявление:
mysql> select * from product where product_name regexp '3';
результат:
+----+-------------------------+---------+
| id | product_name | price |
+----+-------------------------+---------+
| 1 | Apple iPhone 13 (A2634) | 6799.00 |
| 4 | OPPO Find X3 | 3999.00 |
+----+-------------------------+---------+
2.2 Как быть чувствительным к регистру
MySQL использует регулярные выражения, которые по умолчанию нечувствительны к регистру, но в большинстве случаев нам нужно сопоставить верхний и нижний регистр английского языка.В настоящее время мы можем использоватьbinaryключевые слова.
нужно:
Запрос продуктов, название которых содержит слово huawei в таблице продуктов
Заявление:
mysql> select * from product where product_name regexp 'huawei';
результат:
+----+----------------+---------+
| id | product_name | price |
+----+----------------+---------+
| 2 | HUAWEI P50 Pro | 6488.00 |
+----+----------------+---------+
В настоящее время результат запроса по умолчанию нечувствителен к регистру, поэтому его можно запросить напрямую.Если мы хотим, чтобы запрос был чувствителен к регистру, нам нужно только добавить двоичное ключевое слово после regexp.
Заявление:
mysql> select * from product where product_name regexp binary 'huawei';
результат:
Empty set (0.00 sec)
Поскольку таблица продуктов не содержит продуктов со строчной буквой huawei, возвращаемый результат — Пустой набор.
2.3 Отличие регулярных выражений от подобных
Некоторые считают, что небольшие партнеры для достижения вышеуказанного открытия, на самом деле, с подобным может быть достигнуто. Во многих сценах нам нравится использовать для сопоставления строк, но эти сцены часто очень просты, а регулярные выражения являются очень мощными инструментами фильтрации текстового поиска, они могут иметь много более мощных друзей, чем подобные операторы. Короче делать как регулярные выражения можно, это значит что в принципе не нравится делать (или хитро).
Например, следующие требования можно легко реализовать с помощью регулярных выражений, но оператор like не знает, как их реализовать.
нужно:
В таблице продуктов запроса информация о продукте появляется хотя бы один раз в названии продукта.
Заявление:
mysql> select * from product where product_name regexp 'v+';
результат:
+----+---------------+---------+
| id | product_name | price |
+----+---------------+---------+
| 5 | vivo X70 Pro+ | 5999.00 |
+----+---------------+---------+
Примечание. Регулярные выражения тяжелые.метасимволСовпадения - это все последовательные события. Эти повторяющиеся метасимволы приведены ниже, и я чувствую, что некоторые друзья поймут их неправильно.
повторяющиеся метасимволы
метасимвол | иллюстрировать |
---|---|
* | 0 или более совпадений, эффект такой же, как у {0,} |
+ | 1 или более совпадений, эффект такой же, как {1,} |
? | 1 или 0 соответствует, эффект такой же, как {0,1} |
{n} | равно количеству n совпадений |
{n,} | совпадений больше или равно n |
{n,m} | Больше или равно n и меньше или равно m, m |