首页 > 解决方案 > 如何在 MySQL 中搜索没有定义字符的字符串?

问题描述

我在 MySQL 5.7.25 表中存储了唯一标识符,它们是 CHAR 并且包含点和斜杠。

现在我需要在没有这些字符的情况下搜索它们。

例如:已知字符串:25518000

表内:255.18.000

似乎 preg_replace 仅在 MySQL > 8.x 中实现。

如何在忽略某些字符的情况下搜索给定的字符串?

像这样的东西:

SELECT * FROM `cat_attr` WHERE `attr_de` REGEXP '\\.' = 25518000

标签: mysqlregex

解决方案


如果它总是点、空格和斜杠,你可以这样做:

SELECT * 
  FROM cat_attr 
 WHERE REPLACE(REPLACE(REPLACE(attr_de, '.', ''), '\\', ''), ' ', '') = 25518000;

例如,这将返回 true:

SELECT REPLACE(REPLACE(REPLACE('11\ 11.1', '.', ''), '\\', ''), ' ', '') = 11111;

推荐阅读