【问题标题】:MySQL multiple And and or match no resultMySQL 多个 And and or 匹配没有结果
【发布时间】:2014-07-18 11:12:03
【问题描述】:

我有一个包含许多字段的表格

我的声明:

select * from
[table]
WHERE
(field1 LIKE 'test%' or field2 LIKE 'test%')
AND
(field1 LIKE 'foo%' or field2 LIKE 'foo%')
AND
public='1'

我有一条记录:field1='foobar',field2='testing',public='1' 但查询与此不匹配!

谁能帮忙?

【问题讨论】:

  • 你应该确保数据库中这些字符串的开头没有空格
  • 您的查询(如问题中所述)应与您提供的数据相匹配。您应该在字符集中寻找前导空格、隐藏字符或看起来相似的字符。
  • 我认为你的条件是错误的.. 两个条件一次都不满足
  • 你能设置一个 SQL Fiddle(在 www.sqlfiddle.com)吗?

标签: php mysql where-clause multiple-columns


【解决方案1】:

你应该试试:

select * from
[table]
WHERE
(ltrim(field1) LIKE 'test%' or ltrim(field2) LIKE 'test%')
AND
(ltrim(field1) LIKE 'foo%' or ltrim(field2) LIKE 'foo%')
AND
public='1'

我希望您在数据库中字符串的开头有一些空格

【讨论】:

    【解决方案2】:

    你可以试试 trim() 函数吗

    select * from
    [table]
    WHERE
    (trim(field1) LIKE 'test%' or trim(field2) LIKE 'test%')
    AND
    (trim(field1) LIKE 'foo%' or trim(field2) LIKE 'foo%')
    AND
    public='1'
    

    【讨论】:

      【解决方案3】:
      field1='foobar', field2='testing', public='1'
      

      如果你需要以上记录,那么试试这个

      select * from
      [table]
      WHERE
      (field1 LIKE 'test%' AND field2 LIKE 'foo%')
      OR
      (field1 LIKE 'foo%' AND field2 LIKE 'test%')
      AND
      public='1'
      

      【讨论】:

        【解决方案4】:

        试试这个

        select * from [table] WHERE ((conact(field1,field2) LIKE '%test%' ) and(conact(field1,field2) LIKE '%foo%')) AND public='1'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-03
          • 1970-01-01
          • 2019-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-31
          • 2016-12-10
          相关资源
          最近更新 更多