我有两列first_name
和last_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%;
高于空结果。
我怎样才能使它在两列上搜索匹配搜索文本的子部分?
2条答案
按热度按时间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%;
让我知道你进展如何。
jdgnovmf2#
我尝试使用
CONCAT
函数,它工作正常。