<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      django 在字符串[str(list)]中精確查找

      1.問題描述

      1.1表結構

      1.2問題

      ref_list為id列表的字符串,需要從ref_list中找出包含指定id的數據(eg id=8)。如果實用models.objects.filter(ref_list__contains=id)無法實現精確查找

      models.objects.filter(ref_list__contains='8')
      '''
      結果:
      1 | 8,9,10,11
      2 | 18,81
      3 | 23,8,33
      4 | 36,78,8
      5 | 37,98, 69
      有多余的數據,增加了時間消耗
      '''
      models.objects.filter(ref_list__contains=',8')
      models.objects.filter(ref_list__contains='8,')
      models.objects.filter(ref_list__contains=',8,')
      '''
      無法精確查抄,并且還會使部分包含id=8的數據無法查找到
      '''

      用django 內置數據庫過濾API操作無法實現精確查找

      2.extra()

      函數原型:extra(params)

      參數說明:由于沒有找到合適的資料,該部分暫時空缺。待找到在補充

      1 Entry.objects.extra(where=["foo='a' OR bar = 'a'", "baz = 'a'"])
      2 等價于
      3 SELECT * FROM blog_entry WHERE (foo='a' OR bar='a') AND (baz='a')

      3.使用sql實現列表查找

      3.1 FIND_IN_SET(str,strlist)

      說明:如果字符串str在由N子串組成的表strlist之中,返回一個1到N的值。一個字符串表是被“,”分隔的子串組成的一個字符串。如果第一個參數是一個 常數字符串并且第二個參數是一種類型為SET的列,FIND_IN_SET()函數被優化而使用位運算!如果str不是在strlist里面或如果 strlist是空字符串,返回0。如果任何一個參數是NULL,返回NULL。如果第一個參數包含一個“,”,該函數將工作不正常。 

      SQL> SELECT FIND_IN_SET('b','a,b,c,d');
      +---------------------------------------------------------+
      | SELECT FIND_IN_SET('b','a,b,c,d')                       |
      +---------------------------------------------------------+
      | 2                                                       |
      +---------------------------------------------------------+
      1 row in set (0.00 sec) 

      缺點:這個函數的問題是逗號中有空格無法識別,所以只能先用REPLACE把空格替換掉。

      3.2 REPLACE(str,from_str,to_str)

      說明:將str中所有的from_str替換為to_str,并返回處理后的結果

      1 mysql>   select   REPLACE( 'www.mysql.com ',   'w',   'Ww');
      2     ->   'WwWwWw.mysql.com '

      4 結果

      models.objects.extra(where=[FIND_IN_SET( '8', REPLACE( ref_list, ' ', ''))])
      '''
      1 | 8,9,10,11  
      3 | 23,8,33
      4 | 36,78,8
      精確查找
      '''

       

      5. 參考:

      MySQL比like語句更高效的寫法locate position instr find_in_set
      Mysql中查找逗號分隔的字符串數據
      Django,數據模型創建之數據庫API參考
      django中extra的用法

      posted @ 2014-11-21 17:16  yunsicai  閱讀(1019)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲天堂av 在线| 国产极品精品自在线不卡| 日韩丝袜欧美人妻制服| 欧美性猛交xxxx乱大交丰满| 国产精品无码专区av在线播放| 波多结野衣一区二区三区| 精品国产女同疯狂摩擦2| 精品国产成人a在线观看| 国模肉肉视频一区二区三区| 男女性高爱潮免费网站| 中文字幕日韩一区二区不卡| 四虎女优在线视频免费看| 男人av无码天堂| 国产一区二区三区导航| 国产伦一区二区三区视频| AV人摸人人人澡人人超碰| 亚洲国模精品一区二区| 久久99久久99精品免视看国产成人| 日韩人妻无码精品久久久不卡| 实拍女处破www免费看| 精品九九热在线免费视频| 在线观看国产精品日韩av| 国产肥臀视频一区二区三区| 少妇又爽又刺激视频| 亚洲av鲁丝一区二区三区黄| 免费看欧美日韩一区二区三区| 一区二区三区四区在线不卡高清| 男女xx00xx的视频免费观看| 久久精品国产精品亚洲艾| 永久免费无码av在线网站| 国产精品露脸视频观看| 久热久热中文字幕综合激情| 国产97人人超碰caoprom| 亚欧美闷骚院| 九九热在线精品视频免费| 国产麻豆成人精品av| 国产亚洲精品精品精品| 韩国无码AV片午夜福利| 琼海市| 久久国产自拍一区二区三区| 777米奇色狠狠俺去啦|