【问题标题】:MYSQL Operand Error I don't understandMYSQL 操作数错误我不明白
【发布时间】:2015-10-16 11:48:47
【问题描述】:

网站新手,但我有一个查询的快照不起作用,我不知道为什么。

类型 5 是通话,类型 0 是便笺(但由于记录可能是通话 保持)所以我试图找到 = 类型 5 或(类型 0 的客户 名称在注释中)。

下面是失败的部分

AND (ct.tpe = 5 OR (ct.tpe = 0 AND ct.smmry LIKE ('%', c.frstnme1 ,'%')))

如果我将c.frstnme1 替换为该字段中的实际名称,这将有效,但它不适用于来自c.frstnme1 的信息请求。我不明白这一点,因为c.frstnme1 中只能有一项信息,并且该表已链接为“FROM c, ct WHERE ct.cse = c.id”,因此不应尝试查找其他名字。但它同样适用于完全相同的查询,但输入的是实际名称。请帮忙!

谢谢 会

【问题讨论】:

  • 那句话是错误信息还是你的规格?
  • 错误消息通常会给出原因和代码中的确切位置。您不理解给定的错误消息这一事实并不意味着该消息是无用的!
  • 我没有说它没用,我说我无法理解它并寻求帮助。无论如何,这已经解决了。谢谢!
  • 好吧,您认为它不够相关,无法将其包含在问题中。以后遇到同样问题的人不太可能在这里google ;-)

标签: mysql sql operand


【解决方案1】:

对于like 模式,您缺少concat()

AND (ct.tpe = 5 OR (ct.tpe = 0 AND ct.smmry LIKE CONCAT('%', c.frstnme1, '%')))

出现奇怪的错误是因为, 在您拥有它的上下文中是不允许的。

【讨论】:

  • 完美,谢谢!我将对 CONCAT 命令进行更多研究,以免将来错过。
【解决方案2】:

您需要在查询中使用 MySQL Concat 函数。

AND (ct.tpe = 5 OR (ct.tpe = 0 AND ct.smmry LIKE CONCAT('%', c.frstnme1 ,'%')))

失败是因为您没有指定将字符串与列连接。当您将其替换为实际名称时它会起作用,因为您正在进行查询:

AND (ct.tpe = 5 OR (ct.tpe = 0 AND ct.smmry LIKE ('%ACTUAL NAME%')))

【讨论】:

  • 谢谢你,Gordon 打败了你,但我们很感激你的回复。我会在 CONCAT 上做一些阅读,因为我的豌豆大脑不了解它的功能,但我会确保它尽快完成。谢谢!
【解决方案3】:

当我们在条件中使用like时,我们需要在“concat”函数中保留比较字符串或一些东西。

谢谢。

【讨论】:

    猜你喜欢
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2016-11-13
    • 2019-07-26
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多