【问题标题】:MySQL - Using REPLACE() In WHERE ClauseMySQL - 在 WHERE 子句中使用 REPLACE()
【发布时间】:2018-09-26 15:29:51
【问题描述】:

我知道我可以通过使用SELECT REPLACE(colm, ' ', '') FROM tbl 替换所有空格来SELECT 列中的数据,但是如何在WHERE 子句中执行此操作?这是我尝试过的:

SELECT things.*, stores.* 
FROM things, stores 
WHERE things.id = 283468234 
&& 
stores.name = "Some Name" 
&& 
REPLACE(LOWER(stores.owner), ' ', '') = "firstnamelastname"

我想要的结果的一个例子是:

|  things.id  |   stores.name    |     stores.owner     |
|-------------|------------------|----------------------|
|  283468234  |    Some Name     |  First Name Last Name|

我得到的错误是:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 25' at line 1

注意:我也尝试过使用AND 而不是&&,但没有任何改变

我认为我收到此错误的原因是由于 PHPMyAdmin 自动删除了我的最后一个 && 语句,并添加了 LIMIT 0, 25,使查询 SELECT things.*, stores.* FROM things, stores WHERE things.id = 283468234 && stores.name = "Some Name" && LIMIT 0, 25。这是问题还是我的问题?我该如何解决这个问题?

【问题讨论】:

  • 添加&& LIMIT 0,25 会导致任何查询出错,因为这是无稽之谈。 phpmyadmin 没有添加&&。也许将您的 && 切换到 AND 看看是否可以清除它。
  • @JNevill 进行了编辑,很抱歉,
  • 该错误与您添加&& LIMIT...有关。现在您更改了代码,输出是什么?请记住根据您不断尝试的内容更改问题
  • 你是什么意思“自动删除你的最后一个 &&? Is the SQL you have in your question the EXACT sql you are submitting? I agree that Phpmyadmin is probably adding LIMIT 0,25` 到你的声明,但这不是导致错误的原因。
  • @JNevill 表示它变成了SELECT things.*, stores.* FROM things, stores WHERE things.id = 283468234 && stores.name = "Some Name" && LIMIT 0, 25

标签: mysql sql replace where-clause


【解决方案1】:

&& 等价于 SQL 中的AND

确保 LIMIT 是 SQL 语句中的最后一个子句。
您对 LIMIT 的使用也不正确。你想要:

LIMIT 25 返回 25 个结果
不是LIMIT 0, 25
(我认为结果 0 到 25 是您的意图)。

把你原来的陈述放在一起:

SELECT things.*, stores.* 
FROM things, stores 
WHERE things.id = 283468234 
AND stores.name = "Some Name" 
AND REPLACE(LOWER(stores.owner), ' ', '') = "firstnamelastname"
LIMIT 25

应该可以,虽然我还没有测试过。

【讨论】:

  • 问题是PHPMyAdmin自动添加了LIMIT 0, 25。我也尝试使用 AND 而不是 && 但我得到了同样的错误
  • @apxx 您是否尝试过在 PHPMyAdmin 之外运行查询?构建一个快速脚本来连接和运行查询,看看你会得到什么。您是否也考虑过编写显式 OUTER JOIN 而不是查询?这也可能是问题的一部分。在这一点上,我不愿意接受表面上的错误。另外,不要使用 .* - 尝试从每个表中选择所需的显式列。
【解决方案2】:

我发现了问题。看起来这纯粹是 PHPMyAdmin 的错误。我尝试使用我的软件运行查询,结果完美无缺。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2014-10-22
    • 2015-10-26
    相关资源
    最近更新 更多