【问题标题】:Multiple rows in single where ... like clause单个 where ... like 子句中的多行
【发布时间】:2019-03-25 15:35:02
【问题描述】:

我正在尝试创建一个搜索表单并尝试在多行/连接行中进行搜索。有没有办法使用类似下面的代码:

$where = "
    WHERE
    (
        s.companyName,
        s.companyName || s.companyType,
        s.companyName || s.companyLocationType,
        s.companyLocationName,
        s.companyLocationName || s.companyLocationType
    ) LIKE (".$val.")
";

或:

$where = "
    WHERE
    (
        s.companyName
        OR s.companyName || s.companyType
        OR s.companyName || s.companyLocationType
        OR s.companyLocationName
        OR s.companyLocationName || s.companyLocationType
    ) LIKE (".$val.")
";

或者我必须这样使用它:

$where = "
    WHERE
        s.companyName LIKE (".$val.")
        OR s.companyName || s.companyType LIKE (".$val.")
        OR s.companyName || s.companyLocationType LIKE (".$val.")
        OR s.companyLocationName LIKE (".$val.")
        OR s.companyName || s.companyLocationType LIKE (".$val.")
";

【问题讨论】:

  • 试试ANY(array) 运算符...
  • ANY() 将不起作用...

标签: sql postgresql where sql-like


【解决方案1】:
WHERE (".$val.") in (s.companyName | s.companyType,s.companyName | s.companyLocationType)

等等。如果您正在寻找完全匹配而不是使用 LIKE,则可以使用。

【讨论】:

  • 这个看起来不错,会在不同的场合使用。但在这种情况下,我将不得不使用 LIKE,因为我也会接受 %/_-parameters 进行特殊搜索。而那些不能在完全匹配的情况下工作,是吗?例如:%c_b% 找到 facebook fpr 示例
  • 在这种情况下,您可能希望使用最后一个示例,因为您将每个不同的输入与模式进行比较
猜你喜欢
  • 2019-06-02
  • 2021-02-13
  • 2017-03-17
  • 2020-09-27
  • 1970-01-01
  • 2022-01-08
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多