Oracle 中 replace函式和translate函式比較
簡要比較:
replace:字串級別的代替
如:SELECT REPLACE('acdd','cd','ef') FROM dual; →aefd
translate:字元級別的代替
如:SELECT TRANSLATE('acdd','cd','ef') FROM dual; →aeff
分別詳解:
replace:
語法:REPLACE ( char , search_string [, replacement_string] )
REPLACE returns char with every occurrence of search_string replaced with replacement_string. If replacement_string is omitted or null, then all occurrences of search_string are removed. If search_string is null, then char is returned.
解釋:repalce中,每個search_string都被replacement_string所代替。
select replace('acdd','cd','ef') from dual;→ aefd
如果replacement_string為空或為NULL,那麼所有的search_string都被移除。
select replace('acdd','cd','') from dual;→ad
如果search_string為null,那麼就返回原來的char。
select replace('acdd','','ef') from dual;→acdd
select replace('acdd','','') from dual;→acdd(也是兩者都為空的情況)
Both search_string and replacement_string, as well as char, can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. The string returned is of VARCHAR2 datatype and is in the same character set as char.
解釋:這段指明瞭可以用的資料型別。
This function provides functionality related to that provided by the TRANSLATE function. TRANSLATE provides single-character, one-to-one substitution. REPLACE lets you substitute one string for another as well as to remove character strings.
解釋:紅色部分也是replace和translate的區別。
translate:
語法:TRANSLATE ( 'char' , 'from_string' , 'to_string' )
TRANSLATE returns char with all occurrences of each character in from_string replaced by its corresponding character in to_string. Characters in char that are not in from_string are not replaced. The argument from_string can contain more characters than
to_string. In this case, the extra characters at the end of from_string have no corresponding characters in to_string. If these extra characters appear in char, then they are removed from the return value.You cannot use an empty string for to_string to remove
all characters in from_string from the return value. Oracle interprets the empty string as null, and if this function has a null argument, then it returns null.
解釋:Translate中,每個from_string中的字元被to_string中相應的字元所代替。
select translate('acdd','cd','ef') from dual;→aeff
如果from_string比to_string長,那麼from_string中多餘的字元將被移除。
select translate('acdd','acd','ef') from dual;→ef (a由e代替,c由f代替,d就被移除)
select translate('acdd','cda','ef') from dual;→eff(c由e代替,d由f代替,a就被移除)
如果to_string為空,或者兩者都為空,那麼返回char也為空。所以to_string不能為空。
select translate('acdd','cd','') from dual;→ (空)
select translate('acdd','','') from dual;→(空)
實戰:
如何判斷一個字串是否是數字?
解:先轉換:由於to_string不能為空,我們巧用#號代替
select translate('abc123','#1234567890.','#') from dual;→abc
from_string中的#被to_string中的#代替,但char中又沒有#字元,所以通過這一步躲開了to_string必須不為空的規則。然後後面的數字以及小數點都轉換為空,於是原來的字串中只留下abc三個字元。
轉換好後,用nvl2判斷即可:
select nvl2(translate('abc123','#1234567890.','#'),'字串','數字') from dual;→字串
nvl2的作用就是,NVL2 (expr1, expr2, expr3) ->expr1不為NULL,返回expr2;為NULL,返回expr3。這樣我們就可以判斷一個字串是否是數字了!解畢!
相關文章
- 【Hive】字串替換函式translate和regexp_replaceHive字串函式
- replace函式函式
- excel 字元比較函式Excel字元函式
- JavaScript - 函式 setTimeout 和 setInterval 的比較JavaScript函式
- C++宏和函式的比較C++函式
- DB2常用函式與Oracle比較TIDB2函式Oracle
- Oracle 正規表示式函式-REGEXP_REPLACE 使用例子Oracle函式
- PHP中preg_replace函式解析PHP函式
- 字串比較的常用函式字串函式
- JavaScript 匿名函式與具名函式執行效率比較JavaScript函式
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- 深入瞭解下replace函式函式
- C++ replace() 函式用法C++函式
- SQL中的替換函式replace()使用SQL函式
- MySQL:MySQL層比較函式呼叫MySql函式
- Rust中的into函式和from函式Rust函式
- oracle 函式Oracle函式
- oracle or 函式Oracle函式
- JavaScript中的compose函式和pipe函式JavaScript函式
- Oracle分析函式與視窗函式Oracle函式
- C與C++在函式和資料的比較C++函式
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- Oracle常用函式Oracle函式
- 7 Oracle 函式Oracle函式
- Oracle 字串函式Oracle字串函式
- Oracle 字串函式Oracle字串函式
- Oracle中pivot函式詳解Oracle函式
- 工作中,Oracle常用函式Oracle函式
- Oracle中Decode()函式的使用Oracle函式
- Python有哪些比較重要的內建函式?Python函式
- cmp是可選的自定義比較函式函式
- oracle 10g函式大全–日期型函式Oracle 10g函式
- Kotlin之“with”函式和“apply”函式Kotlin函式APP
- 建構函式顯式返回 this 在 new 運算及 call 方法中的比較函式
- Oracle OCP(06):通用函式和條件表示式Oracle函式
- 6、Oracle中的分組函式Oracle函式
- JS 中的函式表示式和函式宣告你混淆了嗎?JS函式
- Oracle 自定義函式Oracle函式