【问题标题】:mysql regex to match string with and without dotsmysql正则表达式匹配带点和不带点的字符串
【发布时间】:2014-10-29 23:01:31
【问题描述】:

我正在尝试编写一个 mysql 查询,该查询将匹配表中的名称,并且数据库中的名称可以包含点或不包含点。因此,例如,我希望我的查询字符串“fast”匹配所有这些:“fast”、“f.ast”、“f.a.s.t”等

我无法预测这些点会在哪里,所以使用 LIKE 似乎不合适

SELECT * FROM teams WHERE (name LIKE "%fast%" OR `name` LIKE "%f.ast%")

我想如果我可以让正则表达式工作,那么我不需要使用 LIKE

SELECT * FROM teams WHERE name REGEXP '.*'

我对 sql 不太擅长,对正则表达式更不擅长。我尝试了一些正则表达式,但还没有弄清楚。有人可以帮帮我吗?

【问题讨论】:

  • 您不需要正则表达式 - 只需 REPLACE

标签: php mysql regex


【解决方案1】:

只需在要搜索的列上使用replace。这会将字段中的所有 . 替换为空,因此您可以将其与您正在搜索的单词进行比较。

SELECT * FROM teams WHERE replace(name, '.', '') LIKE "%fast%"

【讨论】:

  • 我不知道替换。感谢您的帮助,比我想象的要容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 2019-05-28
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多