gpt4 book ai didi

mysql - Model.objects.raw() 中的 django 'LIKE' 语句

转载 作者:行者123 更新时间:2023-11-30 01:29:05 27 4
gpt4 key购买 nike

我在 django 中使用 Model.objects.raw() 的查询语句“like %s%”时遇到问题。我猜问题出在“%”字符上,但我不知道它在哪里。这是我的模型的代码:

def listInRange(self, placeLat, placeLng, typeId, range, placeTag):
tags = ''
if placeTag:
tags = "AND (placeTag LIKE '%" + "%' OR placeTag LIKE '%".join(placeTag.split(',')) + "%')"

query = "SELECT *, \
( \
6371000 * \
acos( \
cos( radians(%s) ) * \
cos( radians(placeLat) ) * \
cos( radians(placeLng) - radians(%s) ) + \
sin( radians(%s) ) * \
sin( radians(placeLat) ) \
) \
) AS placeDistance, \
COUNT(r.reviewId) as placeReviews, \
(SUM(r.reviewPointPrice)/COUNT(r.reviewId)+SUM(r.reviewPointService)/COUNT(r.reviewId)+SUM(r.reviewPointLocation)/COUNT(r.reviewId)+SUM(r.reviewPointCondition)/COUNT(r.reviewId)+SUM(r.reviewPointComfort)/COUNT(r.reviewId))/5 AS averagePoint \
FROM place_place p \
LEFT JOIN review_review r \
ON r.reviewPlace_id = p.placeId\
WHERE placeType_id = %s %s \
GROUP BY p.placeId \
HAVING placeDistance < %s \
ORDER BY placeDistance"

return Place.objects.raw(query, [placeLat, placeLng, placeLat, typeId, tags, range])

如果placeTag不为空,那么它将添加到WHERE条件中。当 placeTag 为空时,没有这样的问题,但是当 placeTag 不为空时,我收到此错误:

Warning: Truncated incorrect DOUBLE value: '1AND (placeTag LIKE '%cafe%' OR placeTag LIKE '%pub%')'

使用 Model.objects.raw() 和 'like' 语句编写 sql 语句的更好方法是什么?

最佳答案

输出中的

"1AND" 首先让我认为您缺少一些空格字符(位于用于连接 ex 的字符串的开头和结尾)。

就您而言,您的 where 子句是 "WHERE placeType_id = 1AND (placeTag..."

<小时/>

如果您尝试将 double 与非 double 进行比较,通常会引发这种错误,但当逻辑断言拼写不正确时也经常会引发这种错误。

稍后,如果出现错误“列不存在”,请注意大写字母,某些 DBGS 不会读取“”或“”的大小写。

关于mysql - Model.objects.raw() 中的 django 'LIKE' 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17672124/

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