Oracle translate函式和正則的幾個應用
Oracle translate函式
column str format a20;
var str varchar2(200);
exec :str:='abc';
select translate(:str,'abc','123') str from dual;
select translate(:str,'a','') str from dual;
select translate(:str,'abc','1') str from dual;
第一種情況,將對映的字串修改
第二種情況,函式第三個引數為空串,則返回 null
第三種情況,如果不能完全對映,則不能對映的字元,一律對映為空串.
應用一,計算字元在字串中出現的次數
var str varchar2(200);
exec :str:='10,20,25';
select regexp_count(:str,',')+1 as cnt from dual;
select length(regexp_replace(:str,'[^,]'))+1 as cnt from dual;
select length(translate(:str,','||:str,','))+1 as cnt from dual;
其中regexp_count在11g中提供
應用二,從字串中刪除不需要的字元
column str format a10;
var str varchar2(200);
exec :str:='CHARK';
select translate(:str,'1AEIOU','1') str from dual;
select regexp_replace(:str,'[AEIOU]') str from dual;
將母音字元刪除.
應用三,字元數字分離
column c1 format a10;
column c2 format a10;
var str varchar2(200);
exec :str:='IT10MANAGER';
select
regexp_replace(:str,'[0-9]','') c1,
regexp_replace(:str,'[^0-9]','') c2
from dual;
select translate(:str,'a0123456789','a') c1,
translate(:str,'0123456789'||:str,'0123456789') c2
from dual;
注意:
正則,^不在方括號裡時,表示字串開始.
參考:
Oracle查詢最佳化改寫,第五章
column str format a20;
var str varchar2(200);
exec :str:='abc';
select translate(:str,'abc','123') str from dual;
select translate(:str,'a','') str from dual;
select translate(:str,'abc','1') str from dual;
第一種情況,將對映的字串修改
第二種情況,函式第三個引數為空串,則返回 null
第三種情況,如果不能完全對映,則不能對映的字元,一律對映為空串.
應用一,計算字元在字串中出現的次數
var str varchar2(200);
exec :str:='10,20,25';
select regexp_count(:str,',')+1 as cnt from dual;
select length(regexp_replace(:str,'[^,]'))+1 as cnt from dual;
select length(translate(:str,','||:str,','))+1 as cnt from dual;
其中regexp_count在11g中提供
應用二,從字串中刪除不需要的字元
column str format a10;
var str varchar2(200);
exec :str:='CHARK';
select translate(:str,'1AEIOU','1') str from dual;
select regexp_replace(:str,'[AEIOU]') str from dual;
將母音字元刪除.
應用三,字元數字分離
column c1 format a10;
column c2 format a10;
var str varchar2(200);
exec :str:='IT10MANAGER';
select
regexp_replace(:str,'[0-9]','') c1,
regexp_replace(:str,'[^0-9]','') c2
from dual;
select translate(:str,'a0123456789','a') c1,
translate(:str,'0123456789'||:str,'0123456789') c2
from dual;
注意:
正則,^不在方括號裡時,表示字串開始.
Oracle查詢最佳化改寫,第五章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1816555/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 函式 Translate 的用法Oracle函式
- Oracle 中 replace函式和translate函式比較Oracle函式
- oracle TRANSLATE函式詳解Oracle函式
- Perl 正則式應用
- 字元陣列的幾個應用函式字元陣列函式
- oracle幾個函式Oracle函式
- translate函式函式
- 【函式】oracle translate() 詳解+例項函式Oracle
- oracle中的幾個hash函式Oracle函式
- 【函式】translate解惑函式
- Translate函式用法函式
- 【正則】oracle正規表示式函式之REGEXP_REPLACE和REGEXP_SUBSTROracle函式
- gethostbyname函式和getservbyname函式的應用函式
- translate函式的靈活用法函式
- python之正則函式Python函式
- day21:正則函式&模組和包(import)函式Import
- C#中幾個正規表示式匹配輸入字元的函式C#字元函式
- Oracle正規表示式函式Oracle函式
- 想要在JS中把正則玩得飄逸,學會這幾個函式的使用必不可少JS函式
- 應用序 or 正則序?
- js正規表示式驗證URL函式程式碼(方便多個正則對比)JS函式
- 幾個簡單又實用的PHP函式PHP函式
- oracle 系統自帶幾個常用函式Oracle函式
- python正規表示式 小例幾則Python
- 函式柯里化和偏函式應用函式
- 幾個常用函式的使用函式
- C/C++的mem函式和strcopy函式的區別和應用C++函式
- 分享一個非常全的php正則驗證車牌格式的函式PHP函式
- 『無為則無心』Python函式 — 28、Python函式的簡單應用Python函式
- Oracle分析函式之LEAD和LAG實際應用Oracle函式
- 正確編寫Designated Initializer的幾個原則
- 正規表示式match()函式和exec()函式的區別函式
- [php]幾個常用函式PHP函式
- 正規表示式的應用
- 幾個重要的內建函式函式
- 幾個分析函式的比較函式
- 【Hive】字串替換函式translate和regexp_replaceHive字串函式
- 請寫一個函式驗證電子郵件的格式是否正確(要求使用正則)函式