php - SQL 搜索字符串,类似于 String 字符串的子字符串的组合

标签 php mysql sql

我有以下查询,用于获取与输入文本类似的医院名称列表。输入的文本是$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/

相关文章:

php - block 引用忽略空行并继续打开新报价

sql - 左连接列上的可选过滤器

Php mongo 查找给定数组的匹配文档

php - 在 PHP 中,是否有一个函数可以返回由关联数组数组中的键值组成的数组?

php - uploadify php mysql - 批量上传和批量插入

mysql - 如何从 2 个 mysql 表中查询数据并将结果连接在一起。我的尝试总是给我太多的结果

PHP - MYSQL - 插入重复键 AND(?)

sql - 满足条件的 COUNT 行(在具有特定条件的行处重置)

mysql - 需要获取书中的最新章节

php - 使用 OR Case 选择数据,但仍然得到错误的结果