我有以下查询,用于获取与输入文本类似的医院名称列表。输入的文本是$address
SELECT address FROM hospital WHERE address LIKE '%$address%'
我的表格包含医院“科泽科德政府医学院”
输入以下文本时结果为成功
Government
Government Medical
Government Medical College
Government Medical College Kozhikode
但是输入以下文本时结果为空
Kozhikode Government Medical College
Kozhikode Medical College
如何替换我的查询?
我想搜索可能是搜索词的子字符串(任意顺序)组合的医院名称。
例如我想要得到
"QWERTY Hospital Kozhikode"
搜索时
"QWERTY Hospital Kozhikode"
"Kozhikode QWERTY Hospital"
"Kozhikode Hospital QWERTY"
"Hospital QWERTY Kozhikode"
"Hospital Kozhikode QWERTY"
最佳答案
首先修剪所有空白:
$address = trim($address);
然后只需在查询中使用 REGEXP:
如果您想成为OR LIKE
,请使用以下内容:
SELECT address FROM hospital WHERE address REGEXP REPLACE('$address',' ','|')
这会将您的多字字符串“转换”为 OR LIKE '%%'
部分。
如果您想成为AND LIKE
,请使用以下内容:
SELECT address FROM hospital WHERE address REGEXP REPLACE('$address',' ','.+')
这会将您的多字字符串“转换”为 AND LIKE '%%'
部分。
有关 REGEXP 的更多信息:http://www.tutorialspoint.com/mysql/mysql-regexps.htm
关于php - SQL 搜索字符串,类似于 String 字符串的子字符串的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35571162/