幾個常見函式的非常見用法
1、instr
instr函式用於定位指定字串某次出現的位置。
通常情況,都是根據順向查詢,即從左向右查詢,比如有字串:1,2,3,4,5,6
現在要查詢第3個","出現的位置,則可以:
select instr('1,2,3,4,5,6',',',1,3) from dual;
但是如果要查詢最後一個","出現的位置,而且個數又不確定,按照上面的思路就無法簡單的實現了
於是就有了反向查詢這個用法:
select instr('1,2,3,4,5,6',',',-1) from dual;
這個-1便指明瞭定位的方向是從右向左查詢。
2、translate(src, rep_str, to_str)
這個函式用於替換src中存在rep_str的字元按順序替換為to_str中的字元。
比如要將上個例子中的字串中的替換為"a,b,c,d,e,f",則可以:
select translate('1,2,3,4,5,6', '1234567890', 'abcdefghij') from dual
但是,如果要將字串中的123456等數字去掉而保留",",該如何做呢。
於是translate函式的特殊用法出現了:
select translate('1,2,3,4,5,6', '^1234567890', '^') from dual
可以在rep_str中指定一個在src中未出現的字元,然後替換目標to_str為該字元即可去掉這些數字。
還有一種用法也很是值得一提:
假如我有三組數字,每組數字都是由1-9中的三個數字組成,且這三組數字之間沒有一個數字是重複的。比如:
123 456 789
就是沒有重複的。但是:
123 345 567
就是有重複的。那如何實現這樣的無重複的三組數字呢?
這裡translate就有可以派上用場了:
select translate('123456789', '$' || n1 || n2 || n3, '$') from dual;
只要判斷上述結果是否為空即可。
原理其實和前面一個例子相同,只不過這裡用法上反過來了,思路實在是妙啊。
3、reverse(str)
將字串的順序反轉。如:
select reverse('1,2,3,4,5,6') from dual;
4、dump
這個命令可以得到所輸入的資料的型別、長度及16進位制轉換後的值。
當dump(str, 1010)時,可以得到這個字串的字符集。
5、extract
擷取時間的某個部分。
比如天:extract(day from current_timestamp)
6、to_dsinterval
interval時間段的函式轉換,格式為:dd hh24:mi:ss
如:select sysdate + to_dsinterval('0 0:0:30') from dual
表示加30秒。
7、numtodsinterval/numtoyminterval
這裡的ds和ym的意思分別是day to second和year to month。理解了這個含義,那麼函式的功能和差別也就自然而然的明白了。
他們和第六個函式的作用相似。不過功能上更加豐富和靈活一點。
比如說,當前時間+1天:
sysdate + numtodsinterval(1, 'day')
當前時間+23秒:
sysdate + numtodsinterval(23,'second')
而且可以動態增長:
select sysdate + numtodsinterval(rownum, 'second')
from dual connect by rownum <= 10
這個用法比直接的Interval靈活多了,直接的interval不能實現動態的增加。
可以這麼做:
select sysdate + interval '23' second
from dual connect by rownum <= 10
但是不能這麼做:
SQL> select sysdate + interval to_char(rownum) second
2 from dual connect by rownum <= 10
3 /
select sysdate + interval to_char(rownum) second
from dual connect by rownum <= 10
ORA-00923: 未找到要求的 FROM 關鍵字
無法實現動態遞增。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-662628/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python語言幾個常見函式的使用Python函式
- Python常見工廠函式用法示例Python函式
- SQL Server中row_number函式的常見用法SQLServer函式
- javascript常見的幾種自執行函式形式JavaScript函式
- 一個常見的閉包函式的分析函式
- 常見函式之單行函式函式
- 幾種常見窗函式及其MATLAB實現函式Matlab
- php常見的危險函式PHP函式
- Oracle常見數字函式Oracle函式
- nslookup命令的常見用法
- 常見Oracle HINT的用法Oracle
- 入行 AI 的幾個常見問題AI
- 詳解常見的損失函式函式
- JavaScript中常見的字串操作函式及用法JavaScript字串函式
- JavaScript 五大常見函式JavaScript函式
- js常見函式總結(一)JS函式
- MySQL教程之常見函式(四)MySql函式
- python常見內建函式Python函式
- 【SQL Server】常見系統函式SQLServer函式
- 關於ImageView的幾個常見問題View
- 蘋果開發幾個常見的錯誤蘋果
- 常見的錯誤 SQL 用法SQL
- useradd 命令的常見用法
- urllib庫的常見用法
- JavaScript中常見的陣列操作函式及用法JavaScript陣列函式
- 日期函式以及常見的日期表達函式
- VB下幾個非常有用的函式 (轉)函式
- 使用python繪出常見函式Python函式
- JavaScript陣列常見用法JavaScript陣列
- Git SSH 命令常見用法Git
- 幾種常見的NO SQL DBSQL
- 幾個常見的MySQL效能測試工具RQMySql
- 幾個網路常見的名詞解釋
- 常見的不不能宣告為虛擬函式函式
- SQLNET.ORA 的常見用法SQL
- 類别範本的常見用法
- 21. 羅列常見的幾個執行時異常
- python和Keras.backend常見函式PythonKeras函式