On Wed, Jul 17, 2013 at 9:15 AM, spondbob squelpen <[email protected]> wrote: > the '1' is coming from typeId, so the WHERE condition must be look like: > WHERE placeType_id=1 AND (placeTag LIKE '%test%') > > print out tags: > AND (placeTag LIKE '%test%') > > i have tried your solution by adding double percentage but still got same > error
Like I said, use the debugger. > > On Wednesday, July 17, 2013 10:04:48 PM UTC+7, [email protected] wrote: >> >> On Wed, Jul 17, 2013 at 8:58 AM, spondbob squelpen <[email protected]> >> wrote: >> > where do i put those double percentage? like this? >> > tags = " AND (placeTag LIKE '%%" + "%%' OR placeTag LIKE >> > '%%".join(placeTag.split(',')) + "%%')" >> > >> > but still got the same error: >> > Warning: Truncated incorrect DOUBLE value: '1 AND (placeTag LIKE >> > '%%test%%')' >> >> Where is the '1' coming from? I'd set a breakpoint here and run the >> development server and see exactly what is going on. Print out the >> tags and query, and if necessary step into Place.objects.raw. >> >> > >> > On Wednesday, July 17, 2013 9:47:25 PM UTC+7, [email protected] wrote: >> >> >> >> On Wed, Jul 17, 2013 at 8:24 AM, spondbob squelpen <[email protected]> >> >> wrote: >> >> > I have problem in django using query statement "like %s%" with >> >> > Model.objects.raw(). I guess the problem is on '%' character but i >> >> > don't >> >> > know where is it. Here's my model's code: >> >> > >> >> > 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]) >> >> > >> >> > If placeTag is not empty, then it will added to the WHERE condition. >> >> > When >> >> > the placeTag is empty there's no such problem, but when placeTag is >> >> > not >> >> > empty i got this error : >> >> > >> >> > Warning: Truncated incorrect DOUBLE value: '1AND (placeTag LIKE >> >> > '%cafe%' >> >> > OR placeTag LIKE '%pub%')' >> >> > >> >> > I guess python make '1 AND (placeTag LIKE '%cafe%' OR placeTag LIKE >> >> > '%pub%')' as the value for placeType_id. How can i make the value of >> >> > placeType_id=1 and add the AND statement? What's the better way to >> >> > write >> >> > the >> >> > sql statement using Model.objects.raw() with 'like' statement? >> >> >> >> You need '%%' when you want to end up with '%' >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups >> > "Django users" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> > an >> > email to [email protected]. >> > To post to this group, send email to [email protected]. >> > Visit this group at http://groups.google.com/group/django-users. >> > For more options, visit https://groups.google.com/groups/opt_out. >> > >> > > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/django-users. > For more options, visit https://groups.google.com/groups/opt_out. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. For more options, visit https://groups.google.com/groups/opt_out.

