代码之家  ›  专栏  ›  技术社区  ›  cagri

像在多个列中

  •  0
  • cagri  · 技术社区  · 6 年前

    我有专栏 title , description , keywords 我想在里面搜索一段文字。
    我在用PostgreSQL。

    SELECT title FROM products
    WHERE
         ANY(ARRAY(title, description, keywords) like '%test%')
    

    我搞错了 syntax error at or near "ANY" .
    我知道我可以 OR 但我认为那不是最好的办法。

    我想我在将列转换为数组时出错了。有人能给我个主意吗?
    谢谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    你的目标大概是 '%test%' 出现一次。有一种方法:

    WHERE EXISTS (SELECT 1
                  FROM UNNEST(ARRAY[p.title, p.description, p.keywords]) x
                  WHERE x LIKE '%test%'
                 )
    

    请注意,如果使用相等,则 IN 足够:

    WHERE test IN (p.title, p.description, p.keywords)