首页 > 解决方案 > MySQL - 列值中的特殊字符

问题描述

我得到了一个大数据(大约 600,000)。

我希望出现值为“word's”的行。

特殊字符将被完全忽略。

桌子:

| column_value  |
| ------------- |
| word's        |
| hello         |
| world         |

询问:select * from table where column_value like '%words%'

结果:

| column_value  |
| ------------- |
| word's        |

我希望出现带有特殊字符的行并忽略它们的特殊字符。

你能帮助我如何通过快速运行来实现它吗?

标签: mysqlsqldatabasespecial-characters

解决方案


您可以使用替换来删除匹配之前的“特殊”字符。

SELECT *
       FROM table
       WHERE replace(column_value, '''', '') LIKE '%words%';

嵌套replace()其他角色的调用。

或者你用正则表达式试试。

SELECT *
       FROM table
       WHERE column_value REGEXP 'w[^a-zA-Z]*o[^a-zA-Z]*r[^a-zA-Z]*d[^a-zA-Z]*s';

[^a-zA-Z]*匹配可选字符,不是 a、...、y 和 z,也不是 A、...、Y 和 Z,因此这也匹配您的搜索词以及字母之间的任何非字母。

或者您可以查看全文搜索带来的选项。也许这也有帮助。


推荐阅读