第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Postgres中LIKE和?之間的區(qū)別

Postgres中LIKE和?之間的區(qū)別

不負(fù)相思意 2019-09-24 16:31:56
我被指示“不要打擾LIKE”,而要使用~。什么是錯的LIKE又是怎樣的~不同?~在這種情況下是否有名稱,或者人們說“使用波浪號運(yùn)算符”?
查看完整描述

3 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個贊

~是正則表達(dá)式運(yùn)算符,并具有其隱含的功能。您可以指定完整的正則表達(dá)式通配符和量詞;有關(guān)詳細(xì)信息,請參見文檔。它肯定比強(qiáng)大LIKE,并且在需要此功能時應(yīng)使用,但它們具有不同的用途。


查看完整回答
反對 回復(fù) 2019-09-24
?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個贊

LIKEIMO 沒有錯,也沒有理由~對此表示贊同。相反。LIKE是SQL標(biāo)準(zhǔn)的。也是SIMILAR TO,但并未得到廣泛支持。PostgreSQL ~ operator(或posix正則表達(dá)式匹配運(yùn)算符)不是SQL標(biāo)準(zhǔn)。


因此,我更喜歡LIKE在表達(dá)能力足夠的地方使用,并且僅~在需要完整正則表達(dá)式的功能時才使用。如果我需要移植數(shù)據(jù)庫,那將是一件痛苦的事。我傾向于使用SIMILAR TOwhen LIKE不夠強(qiáng)大的功能,但是在Erwin發(fā)表評論后,我想我會停止這樣做,而~在LIKE不工作時使用。


此外,PostgreSQL的可以使用前綴搜索(例如B-tree索引LIKE 'TEST%')用LIKE或SIMILAR TO如果數(shù)據(jù)庫是在C區(qū)域或索引有text_pattern_ops。與我之前寫的相反,Pg也可以為左錨posix正則表達(dá)式使用這樣的索引,它只需要一個顯式的'^ TEST。*',因此正則表達(dá)式只能從頭開始匹配。我之前的帖子錯誤地指出~不能使用索引進(jìn)行前綴搜索。消除了這種差異,實(shí)際上取決于您是否愿意堅(jiān)持使用標(biāo)準(zhǔn)兼容功能。


看到這個演示SQLFiddle ; 注意不同的執(zhí)行計(jì)劃。注意之間的差異~ '1234.*'和~ '^1234.*'。


給定樣本數(shù)據(jù):


create table test (

   blah text

);

insert into test (blah)  select x::text from generate_series(1,10000) x;

create index test_blah_txtpat_idx ON test(blah text_pattern_ops);

請注意,~即使在使用seqscan時,它也要使用索引,即使它實(shí)際上要昂貴得多(由于enable_seqscan之所以如此),因?yàn)樗鼊e無選擇LIKE。但是,~左錨定的校正也使用索引:


regress=# SET enable_seqscan = 'f';

SET

regress=# explain select 1 from test where blah ~ '12.*';

                                QUERY PLAN                                 

---------------------------------------------------------------------------

 Seq Scan on test  (cost=10000000000.00..10000000118.69 rows=2122 width=0)

   Filter: (blah ~ '12.*'::text)

(2 rows)

regress=# explain select 1 from test where blah like '12%';

                                     QUERY PLAN                                     

------------------------------------------------------------------------------------

 Bitmap Heap Scan on test  (cost=4.55..46.76 rows=29 width=0)

   Filter: (blah ~~ '12%'::text)

   ->  Bitmap Index Scan on test_blah_txtpat_idx  (cost=0.00..4.54 rows=29 width=0)

         Index Cond: ((blah ~>=~ '12'::text) AND (blah ~<~ '13'::text))

(4 rows)

regress=# explain select 1 from test where blah ~ '^12.*';

                                     QUERY PLAN                                      

-------------------------------------------------------------------------------------

 Bitmap Heap Scan on test  (cost=5.28..51.53 rows=101 width=0)

   Filter: (blah ~ '^12.*'::text)

   ->  Bitmap Index Scan on test_blah_txtpat_idx  (cost=0.00..5.25 rows=100 width=0)

         Index Cond: ((blah ~>=~ '12'::text) AND (blah ~<~ '13'::text))

(4 rows)


查看完整回答
反對 回復(fù) 2019-09-24
  • 3 回答
  • 0 關(guān)注
  • 789 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號