Mysql 如何在数据库中搜索子字符串?

Mysql 如何在数据库中搜索子字符串?,mysql,sql,Mysql,Sql,我的数据库表中有两列: ------------------------------- name | address ------------------------------- raj kumar | park street yogin patel | ghari chowk raju singh | sultan ganj 我想检索包含sultan ganj的行,但我错误地搜索了sultanganj(单词之间没有空格)。为了得

我的数据库表中有两列:

-------------------------------
name            | address
-------------------------------
raj kumar       | park street    
yogin patel     | ghari chowk 
raju singh      | sultan ganj

我想检索包含
sultan ganj
的行,但我错误地搜索了
sultanganj
(单词之间没有空格)。为了得到正确的结果,我将使用什么查询?

您可以
用空字符串替换
address
字段中的所有空格,并将其与
sultanganj
进行比较:

SELECT * 
FROM `table`
WHERE REPLACE(`address`, ' ', '') = 'sultanganj'
这将返回给您:

-------------------------
    name   |   address
-------------------------
raju singh | sultan ganj

下面的查询将帮助您

select * from table1 Where replace(address,' ','') = replace('sultanganj',' ','')

只需像下面那样使用
REPLACE
函数替换值中的额外空格

select name, address
from yourtable
where replace(address,' ','') = 'sultanganj'
编辑:

您可以在回答中使用相同的查询,只是将
WHERE
条件更改为类似WHERE地址的“%park%”或类似于“%road%”的地址。这样,它将匹配包含单词
park
road
两者的所有地址(例如:
parkroad
parkstreet
HellRoad
Heavenpark
等)

这个问题对我有用

编辑


where
子句中组合
replace
,并将
类似。示例:
从表_name中选择*,其中替换(地址,,'')如“%sultanganj%”查看Levenshtein距离如果您正在执行某种搜索函数MySQL不包含Levenshtein函数,但这里列出了一个实现:imho,这更好,因为答案涉及替换空格,at将有助于解决更一般的拼写错误。感谢您的回答,但还有一个问题,假设我搜索了parkroad(单词之间没有空格),但我的数据库中没有此类单词,但我仍然希望接收包含park或road或两者的行。那么我将使用哪个查询?plz回答谢谢您的回答,但还有一个问题假设我搜索了parkroad(单词之间没有空格),但我的数据库中没有这样的单词,但我仍然希望收到一行包含park或road或两者。那么我将使用哪个查询?请answer@user3717804,您可以在回答中使用相同的查询,除了将
WHERE
条件更改为类似
WHERE地址,如“%park%”或地址,如“%road%”
。您使用哪个查询将单个单词(parkroad)拆分为两个单词(park,road)?谢谢您的回答,但假设我搜索了parkroad,还有一个问题(单词之间没有空格)并且我的数据库中没有这样的单词,但我仍然希望收到一行包含park或road或两者的内容。那么我将使用哪个查询?plzanswer@user3717804您可以在此应用程序中使用相同的查询answer@user3717804我编辑答案,并检查搜索元素“park”、“road”、“parkroad”和“park road”这个词对我来说很有用。告诉我你是如何把park road这个词分解成park,roadok基本上我想你没有明白我的问题,所以让我为你澄清一下。所以我正在搜索“park road”,如果你看到上面没有这样的词,但是有“park street”“。因此,我想要的不是没有结果,而是接收包含park或road的行。我不是一次又一次地提供输入。我已经提供了一次输入“parkstreet”。因此,现在您给出了一个查询,您如何将parkstreet分解为两个词park,StreetHanks以获得答案,但假设我搜索parkstreet,还有一个问题(单词之间没有空格)并且我的数据库中没有这样的单词,但我仍然希望收到一行包含park或road或两者。那么我将使用哪个查询?请回答
select name, address
from yourtable
where address like '%park%' or address like '%road%'
SELECT * FROM table where replace(`address`,' ', '' ) like '%your search element%' or `address` like '%your search element%'
(1)SELECT * FROM table where replace(`address`,' ', '' ) like '%parkstreet%' or `address` like '%parkstreet%'
(2)SELECT * FROM table where replace(`address`,' ', '' ) like '%park%' or `address` like '%park%'
(3)SELECT * FROM table where replace(`address`,' ', '' ) like '%street%' or `address` like '%street%'
(4)SELECT * FROM table where replace(`address`,' ', '' ) like '%park street%' or `address` like '%park street%'