2011-01-22 8 views
2

like 함수에서 Django 원시 sql 쿼리를 시도했지만 결과가 비어 있습니다. 나는이 쿼리를 mysql 클라이언트 도구를 사용하여 많은 레코드를 얻는다. 이 문제를 해결하는 방법?django 원시 쿼리 백분율 기호 문제

내 쿼리 : 각 %%%로 교체

SELECT s.* , s.id as pk 
    FROM d_status as s, 
     (select post_id 
      from p_useractions 
      where from_user_id in 
       (select to_user_id 
        from p_fallowers 
        where from_user_id = 1) 
     ) as a 
    WHERE s.from_user_id = 1 OR 
     s.text like '%@Mustafa Yontar2123%' OR 
     s.id = a.post_id 
GROUP BY s.id 
ORDER BY s.last_update 
    LIMIT 25 

답변

1

MySQL에 대한 문서에서 인용이 :

 
With LIKE you can use the following two wildcard characters in the pattern. 

    Character Description 
    %   Matches any number of characters, even zero characters 
    _   Matches exactly one character 

To test for literal instances of a wildcard character, precede it by the 
escape character. If you do not specify the ESCAPE character, \ is assumed. 

그래서 당신의 패턴은 '\%@Mustafa Yontar2123\%' 할 필요가있다. 쿼리에 대한 파이썬 코드는 다음과 같이 표시됩니다

query = r"""SELECT s.* , s.id as pk FROM d_status as s, 
        (SELECT post_id FROM p_useractions WHERE from_user_id in 
        (SELECT to_user_id FROM p_fallowers WHERE from_user_id = 1)) as a 
      WHERE s.from_user_id = 1 or 
        s.text like '\%@Mustafa Yontar2123\%' or 
        s.id = a.post_id 
      GROUP BY s.id 
      ORDER BY s.last_update 
      LIMIT 25""" 

PostgreSQLSQLite에 대한 문서가 같은 일을 언급.

9

보십시오. 따라서 예제의 관련 부분은 '%%@Mustafa Yontar2123%%'과 같습니다.

+0

내게 이렇게 절약되었습니다. 당신을 사랑합니다 @ 고맙습니다! – Dejell

관련 문제