首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL搜索字符串,类似于字符串的子字符串组合。

SQL搜索字符串,类似于字符串的子字符串组合。
EN

Stack Overflow用户
提问于 2016-02-23 07:20:14
回答 3查看 156关注 0票数 0

对于获取类似于输入文本的医院名称列表,我有以下查询。输入的文本是$address

代码语言:javascript
运行
复制
SELECT address FROM hospital WHERE address LIKE '%$address%'

我的桌子上有医院“政府医学院科济科德”

结果是在输入以下文本时取得成功

政府 政府医疗 政府医学院 Kozhikode政府医学院

但输入以下文本时结果为空

Kozhikode政府医学院 Kozhikode医学院

如何替换我的查询?

我想搜索医院的名称,这很可能是组合子字符串(以任何顺序)的搜索词。

例如,我想要

QWERTY医院Kozhikode

搜索时

QWERTY医院Kozhikode 科济科德QWERTY医院 科济库德医院QWERTY QWERTY Kozhikode医院 Kozhikode QWERTY医院

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-23 07:31:19

首先修剪任何空白处:

代码语言:javascript
运行
复制
$address = trim($address);

然后,只需在查询中使用REGEXP:

如果您想成为OR LIKE,请使用以下命令:

代码语言:javascript
运行
复制
SELECT address FROM hospital WHERE address REGEXP REPLACE('$address',' ','|')

这是将多个字串“转换”成OR LIKE '%%'部件。

如果您想成为AND LIKE,请使用以下命令:

代码语言:javascript
运行
复制
SELECT address FROM hospital WHERE address REGEXP REPLACE('$address',' ','.+')

这是将多个字串“转换”成AND LIKE '%%'部件。

这里有更多关于REGEXP的信息:http://www.tutorialspoint.com/mysql/mysql-regexps.htm

票数 2
EN

Stack Overflow用户

发布于 2016-02-23 07:27:32

您可以将搜索查询拆分到空格上,然后编写如下查询:

任何一词:

代码语言:javascript
运行
复制
SELECT address FROM hospital WHERE address LIKE '%QWERTY%' OR address LIKE '%Hospital%' OR address LIKE '%Kozhikode%'

所有字句:

代码语言:javascript
运行
复制
SELECT address FROM hospital WHERE address LIKE '%QWERTY%' AND address LIKE '%Hospital%' AND address LIKE '%Kozhikode%'

但是,对于大型表来说,这是不有效的。

否则,我建议查看MySQL中的全文索引,这将允许您在文本中搜索一个或几个单词。https://dev.mysql.com/doc/refman/5.6/en/innodb-fulltext-index.html

票数 0
EN

Stack Overflow用户

发布于 2016-02-23 07:28:10

here已经回答了这个问题。

只需在单词上循环并为每个单词添加一个"WHERE name=“%?%,它现在的行为就像您想要的那样:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35571162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档