mysql - 在数据库中查找尽可能接近的精确匹配 - 哪种方式更好?

标签 mysql search csv

我有一个情况:

我有一个数据库(MySQL),其中包含这样的产品及其代码

BLACK SUGAR BS 709
HOT SAUCE AX889/9
TOMY 8861

我收到了一个 Excel 电子表格,已将其转换为 CSV,其中包含产品的价格。它的结构由两列组成,代码和价格,如下所示:

BS709          23.00
AX 889 /9      10.89
8861           1.69

我编写了一个脚本,通过使用 FOREACH 和 %LIKE% 查询在数据库中搜索相应的产品代码来更新产品价格。

FOREACH CSV 中的行,使用“WHERE Product_code LIKE %code%”搜索数据库。

这当然是一种原始且不太成功的更新价格的方法,因为 CSV 中的代码与数据库中的代码不完全匹配(在语法上),所以如果我在数据库中有两个包含 BS709 (BS70923 )在他们的代码中我得到了多个匹配。

有更好的方法吗?

最佳答案

您可以使用 MySQL 修剪空格和其他字符的列 replace()在比较之前。这将返回所有完全匹配的内容,无论是否包含任何空格。

SELECT * FROM table WHERE REPLACE(product_code, ' ', '' ) LIKE 'code'

关于mysql - 在数据库中查找尽可能接近的精确匹配 - 哪种方式更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670901/

相关文章:

javascript - 将 CSV 转换为带有 header 的 JSON

java - 使用 NIO (Java) 在 EOF 后重新读取文件

php - MYSQL 按最近的 UTM 坐标对结果进行排序

mysql - 比较具有相同 ID 的行的日期时间,只返回日期时间差小于 4 小时的列

mysql - 这 2 个 SQL 查询返回不同的结果

c# - 如何搜索各种类型的属性

python - 没有搜索结果

java - 从 CQ5.5 索引中获取搜索词建议

matlab - 如果 csvread 失败则跳过文件 Matlab

mysql - 如何在数据库中组织国际产品