如何在匹配之前替换 mySQL 列


How to regexp replace mySQL column before matching?

如何在MySQL中使用正则表达式重写列值以与精确字符串匹配?我只能找到相反的指南。

SELECT * FROM customers WHERE regexp_replace('([^0-9])', '', phone) = '0123456789';

原因是该列可以包含各种格式,例如"012-345 6789"(0)12-3456789"等等......

请注意:这不是关于如何更好地存储数据的问题。但是正则表达式替换是否可能。这个例子只是为了简化问题和它的本质而作示范。

您可以使用

以下 2 个步骤改进您的应用程序:

  • 写入迁移,将不同格式的数据转换为一种格式规范
  • 将此值的格式移动到视图图层

此方法为您提供:

  • 易于通过此字段进行搜索
  • 在不同视图中灵活地为此字段使用不同的格式