如何在搜索用户PostgreSQL时组合多个列



如何在按姓氏、名字和父名搜索用户时组合多个列我有两张桌子:

用户检查

id, user_id, check_id, status, created_at

检查表:

id, birth_day, region_id, status, created_at, full_name_name, full_name_surname, full_name_patronymic

表格填充示例


INSERT INTO user_check (id, user_id, check_id, status, created_at) VALUES
('123e4567-e89b-12d3-a456-426614174000', '123e4567-e89b-12d3-a456-426614174001', '123e4567-e89b-12d3-a456-426614174002', 'wait', '2020-01-05'),
('123e4567-e89b-12d3-a456-426614174001', '123e4567-e89b-12d3-a456-426614174002', '123e4567-e89b-12d3-a456-426614174002', 'wait', '2020-01-07'),
('123e4567-e89b-12d3-a456-426614174002', '123e4567-e89b-12d3-a456-426614174003', '123e4567-e89b-12d3-a456-426614174006', 'wait', '2020-01-08');
INSERT INTO check_request (id, birth_day, region_id, status, created_at, full_name_name, full_name_surname, full_name_patronymic, document_type, document_number, document_series) VALUES
('123e4567-e89b-12d3-a456-426614174002', '2015-02-08', '52', 'status', '2021-05-01 17:15','Ivanov', 'Ivan', 'Anatolievich'),
('123e4567-e89b-12d3-a456-426614174006', '2015-02-08', '52', 'status', '2021-05-01 17:15','Ivanov', 'Anton', 'Anatolievich');

我请求查找用户

SELECT user_check.user_id, user_check.status, CONCAT_WS(' ',full_name_name ,full_name_surname, full_name_patronymic)
FROM user_check
JOIN check_request ON check_request.Id = user_check.check_id
WHERE concat(check_request.full_name_name,' ', check_request.full_name_surname, ' ', check_request.full_name_patronymic) LIKE 'Anton';

Otput

0 rows

我想要的是:如何分别按姓氏、名字或父名查找一个人,例如(只有Anton(或按姓氏搜索,这样就不会完全输入用户数据,而是按名字、姓氏或父名找到匹配项?提前感谢!

假设您想要like:中的通配符

LIKE '%Anton%'

最新更新