like 操作中對於'_'處理

wei-xh發表於2010-05-08

ORACLE對於like操作,預設%代表通配任意字元或任意N個字元。_代表通配任意一個字元。

只所以提到這個,是因為今天跟網閘公司的人確認我們的資料庫中有多少表需要同步,我就寫了如下的一條語句,想查到不帶_的表。

select * from user_tables where table_name not like '%_%';

可是輸入結果為空,實際上我們庫裡絕大多數表都是不帶_的。

我這才意識到_肯定是特殊字元,需要轉義。

上網查詢資料後,知道正確寫法應為:

select * from user_tables where table_name not like '%\_%' escape '\';

其中\可以為任意字元。

也可以這樣寫:

select * from user_tables where instr(table_name,_)=0;

參考文章:http://space.itpub.net/519536/viewspace-621900

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-662248/,如需轉載,請註明出處,否則將追究法律責任。

相關文章