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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Oracle中REGEXP_LIKE與LIKE的區(qū)別?

Oracle中REGEXP_LIKE與LIKE的區(qū)別?

Oracle中REGEXP_LIKE與LIKE的區(qū)別
查看完整描述

3 回答

?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

  • Oracle中的Like操作符使用'_'和'%'作為通配符,使用就像這樣:

  • SELECT name FROM test_like WHERE name like '_a%'; 

  • 即匹配test_like表name列中第2個(gè)字母是a的所有行。但是注意,Oracle匹配時(shí)區(qū)分大小寫的。也就是說(shuō)上面的查詢時(shí)無(wú)法查詢到name='SAas'這行的。

  • Oracle10g中提供的正則表達(dá)式功能可以很好的解決這個(gè)問(wèn)題,當(dāng)然這不是使用正則表達(dá)式函數(shù)的唯一優(yōu)點(diǎn),實(shí)際上它比Like操作符強(qiáng)大的多。

  • 正則表達(dá)式的語(yǔ)法就不用多說(shuō)了,現(xiàn)在大多數(shù)語(yǔ)言都支持正則表達(dá)式了。

  • 下面主要介紹下Oracle中正表達(dá)式函數(shù)REGEXP_LIKE的使用:

  • REGEXP_LIKE(x, pattern [, match_option])     

  • 當(dāng)源字符串x匹配正則表達(dá)式pattern時(shí),返回true??梢允褂胢atch_option修改默認(rèn)匹配選項(xiàng),該參數(shù)可以被設(shè)置為:   

  • - 'c', 說(shuō)明在進(jìn)行匹配時(shí)區(qū)分大小寫(默認(rèn)選項(xiàng))   

  • - 'i', 說(shuō)明在進(jìn)行匹配時(shí)不區(qū)分大小寫   

  • - 'n'   允許使用可以匹配任意字符的操作符(通常是'.')   

  • - 'm', 將x作為一個(gè)包含多行的字符串  

  • 舉個(gè)例子:

  • SELECT * FROM test_reg WHERE REGEXP_LIKE(name, '(a)\1', 'i');  

  • 上面的SQL語(yǔ)句匹配test_reg表中name列含有兩個(gè)連續(xù)字符'a'(不區(qū)分大小寫)的行,如name='SaAs'。此外,這里我們還使用了正則表達(dá)式中的后引用語(yǔ)法——\n表示重復(fù)n次上次匹配的內(nèi)容,此處(a)\1表示匹配兩個(gè)連續(xù)的字符'a'。

  • 需要注意的是,后引用必須使用雙括號(hào),否則會(huì)出現(xiàn)如下結(jié)果:

  • SELECT * FROM test_reg WHERE REGEXP_LIKE(name, 'a\1', 'i')   

  • ORA-12727: 正則表達(dá)式中的后向引用無(wú)效  

  • 最后一點(diǎn),不要混淆LIKE操作符的通配符和正則表達(dá)式的語(yǔ)法,也就是說(shuō)不要再正則表達(dá)式中使用LIKE操作符中的通配符,如果這樣做會(huì)得到未知的結(jié)果,因?yàn)?#39;_'和'%'會(huì)被正則表達(dá)式當(dāng)做普通字符進(jìn)行匹配。

    比如下面這條SQL想要得到name='SaAs'這條記錄,但實(shí)際的查詢結(jié)果為空。

  • SQL> SELECT * FROM test_reg WHERE REGEXP_LIKE(name, '^_(a)\1', 'i');   

  • NAME  

  • ----------  實(shí)際應(yīng)該使用:

  • SQL> SELECT * FROM test_reg WHERE REGEXP_LIKE(name, '^.(a)\1', 'i');       

  • NAME  

  • ----------   SaAs  



查看完整回答
反對(duì) 回復(fù) 2019-03-26
?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊

REGEXP_LIKE這個(gè)是正則表達(dá)式函數(shù),需要正則表達(dá)式來(lái)匹配結(jié)果。如,我要找一個(gè)表的列以 0 開始以 80 結(jié)束的長(zhǎng)度為6位的數(shù)據(jù),
SELECT * FROM staff a WHERE a.staff_code LIKE '0___80';
SELECT * FROM staff a WHERE REGEXP_LIKE(a.staff_code,'0[0-9]{3}80');

查看完整回答
反對(duì) 回復(fù) 2019-03-26
  • 3 回答
  • 0 關(guān)注
  • 1460 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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