试试这个
原始数据:
姓名
Doe John
Stack Overflow
Pew Ned
记录搜索
declare @String2Search varchar(50)
set @String2Search = 'John Doe'
Sql 服务器查询
select name from @t
where REPLACE(name,' ','') like '%' + REPLACE(@String2Search,' ','') + '%'
OR
SUBSTRING(name,CHARINDEX(' ',name),len(name)) + SUBSTRING(name,0,CHARINDEX(' ',name)) like '%' + REPLACE(@String2Search,' ','') + '%'
MySql 查询
select name from @t
where REPLACE(name,' ','') like '%' + REPLACE(@String2Search,' ','') + '%'
OR
SUBSTRING(name,LOCATE(' ',name),LENGTH(name)) + SUBSTRING(name,0,LOCATE(' ',name)) like '%' + REPLACE(@String2Search,' ','') + '%'
注意-我是一个 sql server 人。所以首先我在 SQL SERVER 中编写了查询,然后我在 google 中检查了 MYSQL 中的相应函数等价,我只是替换了那些
喜欢
SQLSERVER ---------------------------------------------- MYSQL
SUBSTRING() ------------Equivalent----------------------- SUBSTRING()
CHARINDEX() ------------Equivalent----------------------- LOCATE()
REPLACE() --------------Equivalent----------------------- REPLACE()
LEN() --------------Equivalent----------------------- LENGTH()
在 Sql Server 中它工作正常。我实现的概念是我将搜索文本中的单词与名字和姓氏以及反向(姓氏和名字)进行匹配
我已经使用替换功能来删除字符之间的任何空格
这条语句(在sql server中)
SUBSTRING(name,CHARINDEX(' ',name),len(name)) + SUBSTRING(name,0,CHARINDEX(' ',name))
或
在我的 SQL 中
SUBSTRING(name,LOCATE(' ',name),LENGTH(name)) + SUBSTRING(name,0,LOCATE(' ',name))
基本上是将名字和姓氏转换为姓氏,然后是名字
希望您了解这个概念,它可能对您有所帮助。