postgresql 搜索名字和姓氏与全名匹配的行,全名之间用空格分隔

axr492tv  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(225)

我有两列first_namelast_name
要根据传递的搜索文本搜索行,我使用iLik查询。
SELECT * FROM t1 WHERE t.first_name ILIKE %John% or t.last_name ILIKE %John%;
以上作品。
但是我想搜索名字和姓氏的全名,但不返回行。
SELECT * FROM t1 WHERE t.first_name ILIKE %John Doe% or t.last_name ILIKE %John Doe%;
高于空结果。
我怎样才能使它在两列上搜索匹配搜索文本的子部分?

6bc51xsx

6bc51xsx1#

我假设John和Doe在两个单独的列中,所以'John'在t.first_name中,'Doe'在t.last_name中。您的底部查询只在其中一列中查找全名。如果姓名已在两列中拆分,则全名不会出现在一列中。我假设这两列也只包含该名和姓。因此,不需要IIKE,您可以只运行一个equals to,为了实现您所需的功能,请运行以下命令:
等于版本- SELECT * FROM t1 WHERE t.名字= 'John' AND t.姓氏= 'Doe';通配符版本- SELECT * FROM t1 WHERE t.名字IIKE %John% AND t.姓氏IIKE %Doe%;
让我知道你进展如何。

jdgnovmf

jdgnovmf2#

我尝试使用CONCAT函数,它工作正常。

SELECT *
FROM t1
WHERE CONCAT(t.first_name, ' ', t.last_name) ILIKE '%John Doe%';

相关问题