gpt4 book ai didi

mysql - modx xpdo 语句中 CONCAT 的正确语法是什么

转载 作者:行者123 更新时间:2023-11-29 23:01:26 24 4
gpt4 key购买 nike

我正在尝试处理搜索工具中的空格 - 特别是用于处理名字和姓氏,我可以让我的查询在命令行上运行,但是当我尝试将它们转换为 modx/pdo 语法时我没有得到结果。 [因为标准翻译不正确]

我拥有的是:

$criteria->where(array(
'Entities.first_name:LIKE' => "%$searchQuery%",
'OR:Entities.cams:LIKE' => "%$searchQuery%",
'OR:Entities.last_name:LIKE' => "%$searchQuery%",
'OR:Entities.company:LIKE' => "%$searchQuery%",
'OR:CONCAT(`Entites`.`first_name`," ",`Entities`.`last_name`):LIKE' => "%$searchQuery%",
));

问题出在最后一个 OR:CONCAT 行,如果我转储查询,我的 where 子句看起来像:

WHERE  ( 
`Entities`.`first_name` LIKE '%first last%'
OR `Entities`.`cams` LIKE '%first last%'
OR `Entities`.`last_name` LIKE '%first last%'
OR `Entities`.`company` LIKE '%first last%'
OR `CONCAT(`Entites`.`first_name`," ",`Entities` LIKE '%first last%'
)

它在 CONCAT 之前添加反引号并省略 .last_name)

正确的语法是什么?

最佳答案

高级条件通常需要构造为字符串而不是键 => 值对。

以下内容并不完全符合原始查询,但应给出相同的结果:

$c->where(array(
'Entities.first_name:LIKE' => "%$searchQuery%",
'OR:Entities.cams:LIKE' => "%$searchQuery%",
'OR:Entities.last_name:LIKE' => "%$searchQuery%",
'OR:Entities.company:LIKE' => "%$searchQuery%",
));
$c->orCondition("CONCAT(Entities.first_name,' ',Entities.last_name) LIKE '%$searchQuery%'");

或者将整组 OR 条件作为字符串传递,以准确地重现您的查询:

$c->where("
Entities.first_name LIKE '%$searchQuery%'
OR Entities.cams LIKE '%$searchQuery%'
OR Entities.last_name LIKE '%$searchQuery%'
OR Entities.company LIKE '%$searchQuery%'
OR CONCAT(Entities.first_name,' ',Entities.last_name) LIKE '%$searchQuery%'
");

关于mysql - modx xpdo 语句中 CONCAT 的正确语法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28465805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com