【问题标题】:SQL ignoring WHERE when searching different columns搜索不同列时 SQL 忽略 WHERE
【发布时间】:2013-03-18 15:56:58
【问题描述】:

我有一个忽略 WHERE 函数部分的 SQL 查询。

SELECT col1, col2, col3, col4
FROM table
WHERE col1 = 'yes'
AND col2 = 'no'
AND col3 || col4
LIKE '%maybe%'

如果没有最后一个 AND 函数,它会返回正确的行,但使用 LIKE 函数会返回 col1 中带有“no”的行。

【问题讨论】:

  • 这是什么 DBMS,MySQL?
  • phpMyAdmion 不是 DBMS,只是其他东西的前端(通常是 MySQL)
  • 我正在尝试提取 col1 没有的信息信息。如果有其他方法可以做到这一点,我也会很高兴。
  • 尝试将括号放在周围以确保 Ands 和 Ors 位于正确的位置。
  • 嗯,是的,看看数据库服务器,上面写着软件:MySQL

标签: mysql sql where sql-like


【解决方案1】:

我将猜测您打算分发 LIKE 语句 - 在这种情况下您想要:

SELECT col1, col2, col3, col4
FROM table
WHERE col1 = 'yes'
AND col2 = 'no'
AND (col3 LIKE '%maybe%'  OR col4 LIKE '%maybe%')

【讨论】:

  • 太好了,我花了一点时间在网站上实施它并检查它,但现在可以工作了。干杯!
【解决方案2】:

如果你想连接col3col4,mysql中正确的语法是使用CONCAT函数:

SELECT
  col1, col2, col3, col4
FROM
  table
WHERE
  col1 = 'yes'
  AND col2 = 'no'
  AND CONCAT(col3, col4) LIKE '%maybe%'

而||是 OR 运算符。

请看小提琴here

【讨论】:

  • SQL 方言可能会有所不同。 Oracle 使用 '||'字符串连接运算符。
  • @Pekka 在 oracle ||是字符串连接的运算符,我认为 OP 正在尝试将 oracle 语法转换为 mysql,但他正在寻找 OR 代替
猜你喜欢
  • 1970-01-01
  • 2017-08-14
  • 2023-02-26
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
相关资源
最近更新 更多