SQL Server使用英文字符串的匹配的時(shí)候默認(rèn)是忽略大小寫(xiě)的,這樣用起來(lái)是比較方便的,如果想不忽略大小寫(xiě)也可以修改配置,但是Oracle好像不能忽略大小寫(xiě),在進(jìn)行字符串匹配的時(shí)候就比較麻煩了。那么該怎么解決大小寫(xiě)敏感的問(wèn)題,把需要的數(shù)據(jù)都查詢出來(lái)呢?最常見(jiàn)的辦法就是把查詢的參數(shù)和字段中的內(nèi)容都轉(zhuǎn)化成大寫(xiě)或者都轉(zhuǎn)化成小寫(xiě),這樣就可匹配了。
比如如下的查詢:
select * from hr.EMPLOYEES t
where upper(first_name)=upper('john')
但是這樣會(huì)存在一個(gè)問(wèn)題,就是這個(gè)SQL查詢無(wú)法用到字段上的索引,如果對(duì)first_name建立了索引,這個(gè)查詢將會(huì)對(duì)表進(jìn)行表掃描,而不使用索引。如果數(shù)據(jù)量大的情況下,這將是一個(gè)非常嚴(yán)重的性能問(wèn)題。
解決辦法就使用Oracle中的“函數(shù)索引”,對(duì)first_name的大寫(xiě)建立索引,代碼如下:
create index hr.employees_first_name on hr.employees(upper(first_name))
由于最近在用Oracle,之前一直用的是SQL Server,對(duì)Oracle不是特別熟悉,所有這篇文章也沒(méi)有什么技術(shù)含量,純粹是為自己記錄而已。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
