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%'