【问题标题】:How to get rows fitting list of parameters in SQL?如何在 SQL 中获取适合参数列表的行?
【发布时间】:2021-12-30 13:48:35
【问题描述】:

我有一些列的数据库,我有 N 个参数。我需要获取列在任何列中都有所有 N 参数的行。

例子:

id  title           place     author
1  'Book Example1' 'shelves' 'John Johnson'
2  'Book Example2' 'library' 'John Johnson'

还有像['shelves', 'John Johnson']这样的参数,所以输出将是1个id的行。

谁能帮我解决这个问题?不知道怎么用 SQL 来做

【问题讨论】:

  • 那么,参数是一个数组吗?数组是定长还是变长?你怎么知道哪个元素对应哪个列?
  • 你的参数从何而来?
  • @TheImpaler 是的,在数组中。长度不固定,我可以得到任意数量的参数。我不知道它是否对应。它们可以在任何地方。例如,如果我得到 ['John Johnson', 'shelves'] 我必须得到相同的结果。
  • @username 怎么知道每个表列对应哪个元素?
  • 如果您不知道哪些元素对应于哪些列,那么您可以: 1) 有一个巨大的非优化查询,尝试所有可能的组合(阶乘数选项),或 2)实现全文搜索。我觉得后者更合适。

标签: sql postgresql


【解决方案1】:

全文搜索的简单替代方案。将每一行整形为单个文本字符串,并将其与参数数组(下图中的'{shelves,John Johnson}'::text[])匹配为正则表达式。

select * from the_table t 
 where t::text ~* all('{shelves,John Johnson}'::text[]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2020-05-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2022-12-31
    相关资源
    最近更新 更多