python - SQL like语句问题和PATINDEX
高洛峰
高洛峰 2017-04-18 09:40:22
0
4
417
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆 (4)
黄舟

如果用字元匹配功能,要求字串同時含有a,b,c,除了像你那樣用 and 連接 like 也想不出什麼其他好辦法。如果把字串打散成一個array,轉而判斷集合的包含關係,可以這樣:

select * from (values('cabbage'), ('black'), ('sblunc')) as articles(link) where array['a','b','c'] <@ regexp_split_to_array(link, E'\s*'); link --------- cabbage black (2 行记录)
    PHPzhong

    你說的 patindex 和 charindex 在 SQL Server裡有,其他的sql這些函數可能有替代的,具體不是很清楚。

      Ty80

      like '%a%'是要作大死的節奏呀,這子句嚴重影響執行效率,目測你是想把link包含有字符串'a'的都選擇出來,那你應該用下面這句話。

      select * from `articles` where position('a' in `link`);
        左手右手慢动作
        1. 沒區別,||是postgresql的拼接符,'a'||'b'拼起來就是'ab'。

        2. Python沒用過,不知道,有個list你到底是想同時滿足list裡所有元素還是滿足任一即可?你這SQL用and連接可是要滿足所有的,如果是滿足任一一個,可以用or,也可以用in,但是like和in的效率問題你自己得試試。

        3. patindex就是查第一個參數在第二個參數的什麼位置,回傳位置號,不過這是SQL Server專用的,在postgresql裡可以用strpos(string, substring)代替。
          另外注意兩點,第一,like避免在開頭使用%匹配,否則效率很慢,第二,盡量在where裡用到的字段上建索引,加快匹配速度。

          最新下載
          更多>
          網站特效
          網站源碼
          網站素材
          前端模板
          關於我們 免責聲明 Sitemap
          PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!