使用多个列在PostgreSQL中搜索查询
我必须通过文本实现查询搜索,但它可以匹配多个列:地址、名称、应用程序引用、代理、状态或决策 数据库中的行数为100万,并且每周都在增加 这是将执行查询的表使用多个列在PostgreSQL中搜索查询,postgresql,Postgresql,我必须通过文本实现查询搜索,但它可以匹配多个列:地址、名称、应用程序引用、代理、状态或决策 数据库中的行数为100万,并且每周都在增加 这是将执行查询的表 我计划使用“like”语句和一些“or”语句进行查询,但我认为对于每周都在增加的表来说,这不是一个好主意。我使用tsvector实现了这一点,这是一个查询示例: SELECT * FROM planning_data JOIN planning_portals ON planning_data.portal = planning_porta
我计划使用“like”语句和一些“or”语句进行查询,但我认为对于每周都在增加的表来说,这不是一个好主意。我使用tsvector实现了这一点,这是一个查询示例:
SELECT *
FROM planning_data JOIN planning_portals ON planning_data.portal = planning_portals.id
WHERE to_tsvector(
coalesce(planning_data.title, '') || ' ' ||
coalesce(planning_data.address, '') || ' ' ||
coalesce(planning_data.ref_number, '') || ' ' ||
coalesce(planning_data.status, '') || ' ' ||
coalesce(planning_data.decision, '') || ' ' ||
coalesce(planning_data.appeal_decision, '') || ' ' ||
coalesce(planning_data.applicant_name, '') || ' ' ||
coalesce(planning_data.agent_name, '') || ' ' ||
coalesce(planning_data.agent_company_name, '') || ' ' ||
coalesce(planning_data.agent_address, '') || ' ' ||
coalesce(planning_data.agent_email, '') || ' ' ||
coalesce(planning_data.status_group, '') || ' ' ||
coalesce(planning_data.postcode, '') || ' ' ||
coalesce(planning_portals.name, '')) @@ to_tsquery('47C & Oldfields & Circus')
请参阅:可以使用concat\ws('',标题,地址,参考号,…)简化和|
的级联过程。