2011-01-22 4 views
2

J'essaie de Django raw sql requête en like fonction, mais les résultats sont vides. J'essaye mysql client outil cette requête et obtiens beaucoup d'enregistrements. comment résoudre ce problème?django requête brute pourcentage problème de signe

ma requête:

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 

Répondre

1

Je cite la documentation 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. 

Ainsi, votre modèle doit être '\%@Mustafa Yontar2123\%'. Le code Python pour la requête ressemblera à ceci:

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""" 

La documentation pour PostgreSQL et SQLite mentionnent la même chose.

9

Essayez de remplacer chaque % avec %%. Ainsi, la partie pertinente dans votre exemple ressemblerait à ceci: '%%@Mustafa Yontar2123%%'.

+0

cela m'a sauvé tellement de temps !!! merci @gorus je t'aime! – Dejell

Questions connexes