2011-01-22 10 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

 
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のドキュメント:クエリのPythonコードは次のようになります。

9

%%で各%を交換してみてください。したがって、あなたの例の関連部分は'%%@Mustafa Yontar2123%%'のようになります。 MySQLのドキュメントからの引用

+0

これは私を大いに救った!私はあなたを愛して@ゴロゴロありがとう! – Dejell