Oracle中的Like操作符使用'_'和'%'作為通配符,,使用就像這樣: Java代碼
即匹配test_like表name列中第2個(gè)字母是a的所有行。但是注意,,Oracle匹配時(shí)區(qū)分大小寫(xiě)的,。也就是說(shuō)上面的查詢(xún)時(shí)無(wú)法查詢(xún)到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的使用: Sql代碼
舉個(gè)例子: Sql代碼
上面的SQL語(yǔ)句匹配test_reg表中name列含有兩個(gè)連續(xù)字符'a'(不區(qū)分大小寫(xiě))的行,,如name='SaAs',。此外,這里我們還使用了正則表達(dá)式中的后引用語(yǔ)法——\n表示重復(fù)n次上次匹配的內(nèi)容,,此處(a)\1表示匹配兩個(gè)連續(xù)的字符'a',。 需要注意的是,后引用必須使用雙括號(hào),,否則會(huì)出現(xiàn)如下結(jié)果: Sql代碼
最后一點(diǎn),,不要混淆LIKE操作符的通配符和正則表達(dá)式的語(yǔ)法,,也就是說(shuō)不要再正則表達(dá)式中使用LIKE操作符中的通配符,如果這樣做會(huì)得到未知的結(jié)果,,因?yàn)?_'和'%'會(huì)被正則表達(dá)式當(dāng)做普通字符進(jìn)行匹配,。 比如下面這條SQL想要得到name='SaAs'這條記錄,但實(shí)際的查詢(xún)結(jié)果為空,。 Sql代碼
實(shí)際應(yīng)該使用: Sql代碼
|
|
來(lái)自: 昵稱(chēng)9283147 > 《ORACLE》