本篇介紹一下一些不太常用的腳本,它們往往有“奇能異效”,但是由于不太常用、不常見、或效率方面的原因,往往被大多數人給遺忘在某些角落裡。呵呵,不知道你看見下面這些腳本,是否覺得眼熟呢?
1: 如果我需要從scott模式下emp表中查詢職位為clerk(秘書)、salesman(銷售人員)這兩種員工,你會怎麼寫?是下面哪種寫法呢?
any表示滿足于條件中任何一個,可以吧條件拆分成or,或等效于in。這個指令有些不常用,很多人習慣用in替代.
2:
/
all表示清單中的所有條件都需要滿足。 可以拆分成and條件。
3: some類似于any,在用法意義上和any意義一樣。表示隻要滿足于條件中的一個。 some、any、all這三者在sql腳本中的效率一般不及子查詢(多行子查詢或關聯子查詢),建議還是少在腳本中使用它們。
4: 假如需要在emp表中插入一條員工名為mr'wang的記錄,由于'一般用來标示一段字元串,如果要'作為一個字元插入表中,其實可以兩個單引号''來表示
大家一般用_
、%來做模糊查詢比對,但是假如我需要查詢字元串中包含_或%字元的模糊查詢,這個該怎麼做呢?比如需要你查詢資料庫中所有表名包含_字元的表,可以用
escape關鍵字指定一個轉義字元“\"來實作。這樣轉移字元後的下劃線就不再表示比對關系了。如下所示:
select * from all_tables where table_name like '%\_%' escape '\'
5: is nan 和 is infinite
此時你在pl/sql裡面查詢select * from test時,會報下面的錯誤(select t1, to_char(t2), t0_char(t3) from test 則不會報ora-01722的錯誤,這是因為nan等不能轉化為數字式格式的緣故)還是去sql/plus裡面查詢吧,如圖所示, is nan 表示非數值比對 is infiniti 表示數值時無限值。
