【发布时间】:2014-04-01 03:06:58
【问题描述】:
我有一个 MySQL 数据库,其中有一列包含一些我想搜索的文本。
假设数据库中的一些文本语句是
- 嗨,我叫 XXX2,住在 YYY ZZZ
- 我的名字也写成XXX-2,我住在YYY-ZZZ
- 有时写成XXX 2,我住在YYYZZZ
现在假设我想通过 PHP 脚本在 MySQL 数据库中搜索包含“XXX2”或“YYY ZZZ”的语句。
使用 MySQL 搜索只会返回语句 1)。我想返回所有三个句子。
我在想的一件事是在 PHP 中生成搜索字符串的所有排列并按顺序查询 MYSQL 数据库。这是最好的方法吗? PHP中有没有现成的函数来生成这样的组合?
【问题讨论】:
-
为什么会返回另外两个?第 2 行和第 3 行既不包含“XXX2”也不包含“YYY ZZZ”。并告诉我们您正在做什么来访问数据。例如发布你的 SQL
-
你的名字会有多少个这样的组合? XXX2、XXX-2、XXX 2、X XX2、XX X2 等?
-
@SajithNair 我知道会有特殊字符的确切位置。所以对于 XXX2,唯一有效的组合是 XXX 2、XXX-2、XXX2。
-
因此您可以将特殊字符位置替换为 % 并像其他人在下面指定的那样进行 LIKE 查询
-
所以会变成 name LIKE 'XXX%2'