MySQL-在WHERE子句中使用REPLACE()
我知道我可以通过从tbl中使用SELECT REPLACEcolm“”来替换所有空格来选择列中的数据,但在WHERE子句中如何做到这一点?以下是我尝试过的:MySQL-在WHERE子句中使用REPLACE(),mysql,sql,replace,where-clause,Mysql,Sql,Replace,Where Clause,我知道我可以通过从tbl中使用SELECT REPLACEcolm“”来替换所有空格来选择列中的数据,但在WHERE子句中如何做到这一点?以下是我尝试过的: SELECT things.*, stores.* FROM things, stores WHERE things.id = 283468234 && stores.name = "Some Name" && REPLACE(LOWER(stores.owner), ' ', '') = "fi
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-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“LIMIT 0,25”附近要使用的正确语法
注意:我也尝试过使用AND而不是&&但是没有任何改变
我认为出现此错误的原因是PHPMyAdmin自动删除了我的上一条&&语句,并添加了LIMIT 0,25,使查询从things中选择things.*,stores.*,stores WHERE things.id=283468234&&stores.name=Some name&&LIMIT 0,25。这是问题还是我的疑问?如何修复此问题?&&相当于SQL中的和
确保LIMIT是SQL语句中的最后一个子句。
您使用的限制也是不正确的。你想要:
对于返回的25个结果,限制为25
不限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的一个bug。我试着用我的软件运行这个查询,它运行得非常完美。添加&&LIMIT 0,25会导致任何查询出错,因为这是胡说八道。phpmyadmin未添加&&。也许将您的&&切换到和,看看这是否会清除它。@JNEVIL进行了编辑,很抱歉,该错误与您添加&&限制有关。。。。现在您更改了代码,输出是什么?记住根据您一直尝试的内容更改问题自动删除最后一个&&是什么意思?您问题中的SQL与您提交的SQL完全相同吗?我同意Phpmyadmin可能在您的语句中添加了限制0,25',但这不是导致错误的原因。@jnevil的意思是它会变成SELECT things.*,stores.*FROM things,stores WHERE things.id=283468234&&stores.name=Some name&&LIMIT 0,25问题是Phpmyadmin会自动添加限制0,25。我也试着用AND代替&&但是我得到了同样的结果error@apxx您是否尝试在PHPMyAdmin之外运行查询?构建一个快速脚本来连接并运行查询,看看您得到了什么。您是否也考虑过编写显式外部联接而不是查询?这也可能是问题的一部分。在这一点上,我不愿意接受表面上的错误。另外,不要使用。*-尝试从每个表中选择所需的显式列。