【问题标题】:MySQL - Products names where name contains specific words [duplicate]MySQL - 名称包含特定单词的产品名称[重复]
【发布时间】:2019-06-07 14:48:18
【问题描述】:

我有一个 MySQL 表 products(id, name, sku) 我有一个字符串数组:$words = ['1' => 'Carlsberg', '2' => 'Premium', '3' => '250ml'];

如果产品名称包含$words数组的一个、两个或所有单词,如何从数据库中获取产品名称?

我需要一些帮助来编写 sql 查询以从数据库中获取这些产品

【问题讨论】:

标签: php mysql


【解决方案1】:

您可以使用“LIKE”或“REGEXP”。正则表达式示例如下所示:

$words = ['1' => 'Carlsberg', '2' => 'Premium', '3' => '250ml'];
$search = implode("|", $words);
$query = "SELECT id,name,sku FROM products WHERE name REGEXP %{$words}%";

.

mysql> select * from products;
+------+------------------------+-------------+
| id   | name                   | sku         |
+------+------------------------+-------------+
|    1 | Carlsberg              | 1094802341  |
|    2 | Premium Beer 999 300ml | 1093i103    |
|    3 | Heineken 250ml         | 10901948901 |
|    4 | Test Product           | 14141414    |
+------+------------------------+-------------+
4 rows in set (0.00 sec)

mysql> select * from products WHERE name REGEXP 'Carlsberg|Premium|250ml';   

+------+------------------------+-------------+
| id   | name                   | sku         |
+------+------------------------+-------------+
|    1 | Carlsberg              | 1094802341  |
|    2 | Premium Beer 999 300ml | 1093i103    |
|    3 | Heineken 250ml         | 10901948901 |
+------+------------------------+-------------+
3 rows in set (0.00 sec)**

请确保您使用 PDO 并首先清理用户输入。

参考:

MySQL Like multiple values

https://www.w3schools.com/sql/sql_like.asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    相关资源
    最近更新 更多