新聞中心
在數(shù)據(jù)庫中,常常會遇到需要處理字符串的情況。如何高效地處理這些字符串是我們所需要關(guān)注的問題。在這里,介紹一種非常常用的處理字符串的函數(shù)——translate函數(shù)。

10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有印臺免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
一、translate函數(shù)的定義
translate函數(shù)是一個用于字符串替換的函數(shù)。它能夠?qū)⒆址兄付ǖ淖址昧硪唤M指定的字符進(jìn)行替換。 translate函數(shù)的語法為:
translate(expr,str1,str2)
其中:
expr:需要進(jìn)行字符串替換的表達(dá)式。
str1:需要被替換的字符(或字符)。
str2:替換的字符(或字符),長度必須和str1相等。
二、translate函數(shù)的應(yīng)用
1.將字符串中某些字符替換為其他字符
例如,將“abc”替換為“def”。
SELECT TRANSLATE(‘a(chǎn)bcdedcabac’, ‘a(chǎn)bc’, ‘def’);
執(zhí)行結(jié)果為:
dedfeddbefd
2.將字符串中的數(shù)字替換為字母
這種情況常常出現(xiàn)在需要生成隨機(jī)字符序列的場景中。
SELECT TRANSLATE(‘1234567890’, ‘0123456789’, ‘a(chǎn)bcdefghij’);
執(zhí)行結(jié)果為:
abcdefghij
3.替換多個字符
有些時候我們需要用不同的字符替換字符串中的多個字符。
SELECT TRANSLATE(‘1223’, ‘123’, ‘ABC’);
執(zhí)行結(jié)果為:
AAAC
三、translate函數(shù)的原理
translate函數(shù)實際上是調(diào)用了內(nèi)置函數(shù)replace函數(shù),只不過replace函數(shù)是按字節(jié)進(jìn)行替換的,而translate函數(shù)是按字符進(jìn)行替換的。 實現(xiàn)translate函數(shù)的步驟如下:
1. 遍歷字符集str1,將其中每個字符c1替換為str2中相應(yīng)的字符c2。如果str1和str2長度不一致,translate函數(shù)內(nèi)部會在str2末尾補(bǔ)充空格,以滿足長度要求。
2. 掃描字符串expr,如果字符c出現(xiàn)在str1中,則將其替換為用str2中相應(yīng)位置的字符c2。
需要注意的是,當(dāng)str1或str2為空時,translate函數(shù)將不會進(jìn)行任何替換操作。
四、
translate函數(shù)可以快速地對字符串進(jìn)行多個字符的替換操作,而且它比較省內(nèi)存。但是,需要有兩個等長的字符串進(jìn)行替換,如果要替換多個字符,也需要消耗大量的內(nèi)存。因此,當(dāng)我們需要操作大量字符串時需要注意,避免出現(xiàn)內(nèi)存溢出的情況。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
在oracle里如何去掉數(shù)據(jù)后的回車換行符
oracle中去掉文本中的換行符、回車符、制表符小結(jié)
一、特殊符號ascii定義
制表符 chr(9)
換行符 chr(10)
回車符 chr(13)
二、嵌套使用repalce,注意每次只能悉含提交一個符號,如先回車再換行悉亂
select REPLACE(gg, chr(10), ”) from dual
要注意chr(13) | | chr(10) 此類結(jié)合使用的情況比較多,回車換行在notepad中是比較好看點的,所以要考慮此種情況
select translate(string,chr(13)||chr(10),’,’) from dual;
1、例子一
create table TEST_1
(
VA VARCHAR2(10),
VB NUMBER(2),
VC VARCHAR2(10),
VD NUMBER(11,2),
VE NUMBER(11,4),
VCL CLOB
);
SQL> select vb,vc,replace(vc,chr(10),”) as TT, translate(vc,chr(10),’,’) from test_1;
VB VCTTTRANSLATE(VC,CHR(10),’,’)
0 Aaaaaaaaa Aaaaaaaaa Aaaaaaaaa
1 Aaaaaaaaa Aaaaaaaaa Aaaaaaaaa
2 大Ba大Babc帶 大Ba,b,c帶
b
c帶
3 CCC
1 DDD
5 AAA
5 AAA
0 AAA
0 AAA
2、例子二
要注意chr(13) | | chr(10) 此類結(jié)合使睜陸笑用的情況比較多,回車換行在notepad中是比較好看點的,所以要考慮此種情況
select vb,vc,replace(vc,chr(10),”) as TT, translate(vc,chr(13)||chr(10),’,’) from test_1;
SQL> select vb,vc,replace(vc,chr(10),”) as TT, translate(vc,chr(13)||chr(10),’,’) from test_1;
VB VCTTTRANSLATE(VC,CHR(13)||CHR(10),
0 Aaaaaaaaa Aaaaaaaaa Aaaaaaaaa
1 Aaaaaaaaa Aaaaaaaaa Aaaaaaaaa
2 大Ba大Babc帶 大Babc帶
b
c帶
3 CCC
1 DDD
5 AAA
5 AAA
0 AAA
0 AAA
11 rows selected
三、對于字符大對象的符號處理
對于clob字段中的符號處理,先to_char然后一樣的處理
SQL> select to_char(vcl),replace(to_char(vcl),chr(10),”) from test_1;
TO_CHAR(VCL)REPLACE(TO_CHAR(VCL),CHR(10),’
嵌套使用repalce,注意每次只能提交一個符號,如先回車再換行嵌套使用repalce,注意每次只能提交一個符號,如先回車再換行select REPLACE(gg, chr(10), ”) from dualsel
select REPLACE(gg, chr(10), ”) from dual
select translate(string,chr(13)||chr(10),’,’) from dual;
func:
2.2.單記錄字符函數(shù)
函 數(shù)說 明
ASCII返回對應(yīng)字符的十進(jìn)制值
CHR給出十進(jìn)制返回字符
CONCAT 拼接兩個字符串,與 ||相同
INITCAT 將字符串的之一個字母變?yōu)榇髮?
INSTR找出某個字符串的位置
INSTRB 找出某個字符串的位置和字節(jié)數(shù)
LENGTH 以字符給出字符串的長度
LENGTHB 以字節(jié)給出字符串的長度
LOWER將字符串轉(zhuǎn)換成小寫
LPAD使用指定的字符在字符的左邊填充
LTRIM在左邊裁剪掉指定的字符
RPAD使用指定的字符在字符的右邊填充
RTRIM在右邊裁剪掉指定的字符
REPLACE 執(zhí)行字符串搜索和替換
SUBSTR 取字符串的子串
SUBSTRB 取字符串的子串(以字節(jié))
SOUNDEX 返回一個同音字符串
TRANSLATE 執(zhí)行字符串搜索和替換
TRIM裁剪掉前面或后面的字符串
UPPER將字符串變?yōu)榇髮?
NVL以一個值來替換空值
ASCII()
是字符串。返回與指定的字符對應(yīng)的十進(jìn)制數(shù)。
SQL> select ascii(‘A’) A,ascii(‘a(chǎn)’) a,ascii(‘0’) zero,ascii(‘ ‘) space from dual;
A a ZERO SPACE
–
SQL> select ascii(‘趙’) zhao,length(‘趙’) leng from dual;
ZHAOLENG
1
CHR()
給出整數(shù),返回對應(yīng)字符。如:
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZH C
— –
趙 A
CONCAT(,)
SQL> select concat(‘010-‘,”)||’轉(zhuǎn)23’ 趙元杰 from dual;
趙元杰
—
轉(zhuǎn)23
INITCAP()
返回字符串c并之一個字母變?yōu)榇髮憽@纾?/p>
SQL> select initcap(‘simth’) upp from dual;
UPP
—–
Simth
INSTR(, > )
在一個字符串中搜索指定的字符,返回發(fā)現(xiàn)指定的字符的位置。
C1: 被搜索的字符串
C2: 希望搜索的字符串
I: 搜索的開始位置,缺省是1
J: 出現(xiàn)的位置,缺省是1。
SQL> SELECT INSTR (‘Oracle Training’, ‘ra’, 1, 2) “Instring” FROM DUAL;
Instring
INSTRB(, > )
除了返回的字節(jié)外 ,與INSTR相同,
LENGTH( )
返回字符串 c 的長度。
SQL> l
1 select name,length(name),addr,length(addr),sal,length(to_char(sal))
2* from nchar_tst
SQL> /
NAME LENGTH(NAME) ADDRLENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))
趙元杰 北京市海淀區(qū)9999.
LENGTHB( )
以字節(jié)返回字符串的字節(jié)數(shù)。
SQL> select name,lengthb(name),length(name) from nchar_tst;
NAME LENGTHB(NAME)LENGTH(NAME)
趙元杰 3
LOWER ( )
返回字符串并將所有字符變?yōu)樾憽?/p>
SQL> select lower(‘AaBbCcDd’) AaBbCcDd from dual;
AABBCCDD
aabbccdd
UPPER( )
與 LOWER 相反,將給出字符串變?yōu)榇髮?。如?/p>
SQL> select upper(‘AaBbCcDd’) AaBbCcDd from dual;
AABBCCDD
AABBCCDD
RPAD 和LPAD(粘貼字符)
RPAD(string,Length)
LPAD(string,Length)
RPAD在列的右邊粘貼字符;
LPAD在列的左邊粘貼字符。
例 1:
SQL>select RPAD(City,35,’.’),temperature from weather;
RPAD(City,35,’.’)temperature
CLEVELAND……
LOS ANGELES..
…………………….
(即不夠 35 個字符用’.’填滿)
LTRIM(左截斷)RTRIM(右截斷) 函數(shù)
LTRIM (string )
Left TRIM (左截斷)刪去左邊出現(xiàn)的任何set 字符。
RTRIM (string )
Right TRIM (右截斷)刪去右邊出現(xiàn)的任何set 字符。
例1:
SELECT RTRIM (‘Mother Theresa, The’, ‘The’) “Example of Right
Trimming” FROM DUAL;
Example of Right
—
Mother Theresa,
SUBSTR Substr(string,start)
取子字符串中函數(shù)
對字串 (或字段),從 start字符 開始,連續(xù)取 count 個字符并返回結(jié)果,如果沒有指 count
則一直取到尾。
select phone,substr(phone,1,3) || ‘0’ || substr(phone,4)
from telecommunication where master ’中國電信’;
SUBSTRB(string,start)
對字串 (或字段),從 start字節(jié) 開始,連續(xù)取 count 個字節(jié)并返回結(jié)果,如果沒有指 count
則一直取到尾。
REPLACE (‘string’ )
String: 希望被替換的字符串或變量。
String_in: 被替換字符串。
String_out: 要替換字符串。
SQL> select replace(‘Informaix 中國公司’,’Informaix’,’IBM Informix’)
2 IBM 數(shù)據(jù)庫 from dual;
IBM 數(shù)據(jù)庫
IBM Informix 中國公司
SOUNDEX( )
返回一個與給定的字符串讀音相同的字符串(不管拼寫是否一樣)。
SELECT DPL_NAME FROM DENIED_PARTIES_LIST WHERE
SOUNDEX(DPL_NAME) = SOUNDEX(‘Saddam Hussain’) ;
DPL_NAME
—-
Al Husseni
Sadda Al Sada.
REPLACE (‘string’ )
String:希望被替換的字符串或變量。
String_in: 被替換字符串。
String_out: 要替換字符串。
SELECT REPLACE (‘Oracle’, ‘Or’, ‘Mir’) “Example “ FROM DUAL;
Example
Miracle
TRIM ( FROM )
RIM可以使你對給定的字符串進(jìn)行裁剪(前面,后面或前后)。
z 如果指定 LEADING, Oracle 從trim_char 中裁剪掉前面的字符;
z 如果指定TRAILING, Oracle 從trim_char 中裁剪掉尾面的字符;
z 如果指定兩個都指定或一個都沒有給出,Oracle從trim_char 中裁剪掉前面及尾面的字
符;
z 如果不指定 trim_character, 缺省為空格符;
z 如果只指定trim_source, Oracle Oracle從trim_char 中裁剪掉前面及尾面的字符。
例子:將下面字符串中的前面和后面的‘ ‘字符都去掉:
SELECT TRIM (0 FROM) “TRIM Example” FROM DUAL;
TRIM example
—-
語法:TRANSLATE(expr,from,to)
om,to) expr: 代表一串字符,
expr: 代表一串字符,from 與 to 是從左到右一一對應(yīng)的關(guān)系,如果不能對應(yīng),則視為空值。
舉例:
select translate(‘a(chǎn)bcbbaadef’,’ba’,’#@’) from dual (b將被#替代,a將被@替代)
select translate(ab
select translate(‘a(chǎn)bcbbaadef’,’bad’,’#@’) from dual?。╞將被#替代,a將被@替代,d對應(yīng)的值是空值,將被移走)
因此:結(jié)果依次為:@#c##@@def 和@#c##@@ef
替喊如嘩換數(shù)據(jù)中所有回車和換行可以用
replace(column,chr(10))
replace(replace(column,chr(10)),chr(13))
或者利用translate函數(shù)。
如果只是替換末尾的回車換鄭行行橡橡用rtrim
rtrim(column,chr(10)) –有些系統(tǒng)回車換行就是一個chr(10)
transform的translate、scale、rotate、skew(2D)的簡單使用
border: 1px dashed red;
solid
為實線;
dashed
為虛線。
margin: 0 auto; ,
margin
后面如果中銀褲只有
兩個參數(shù)
的話,之一個表示 top 和 bottom ,賣簡第二個表示 left 和 right 。
因為0 auto,表示上下邊界為0,左右則根據(jù)寬度自適應(yīng)相同值(即居中)。
如上圖所示,X軸偏移的方法有如下三個
如上圖所示,Y軸偏移的方法有如下兩個
如上圖所示,Y軸偏移的方法有如下一個
注意搏悄:
上述所說的都是X和Y軸的正向偏移,我們也可以給它設(shè)置成
負(fù)數(shù)
,使其往反向偏移,如 transform: translate(-100px) ;即為向x軸的反向(左側(cè))偏移了100px。
該函數(shù)只
接受數(shù)字
,不接受類似于”100px“。
如上圖所示,X軸縮放的方法有如下兩個
如上圖所示,Y軸縮放的方法有如下兩個
如上圖所示,Y軸縮放的方法有如下兩個
該函數(shù)只接受一個參數(shù),也就是
角度
。
角度可以由以下四種不同的單位類型來定義。
該函數(shù)只接受一個參數(shù),也就是角度。
如上圖所示,X軸傾斜的方法有如下兩個
如上圖所示,Y軸傾斜的方法有如下一個
如上圖所示,X/Y軸傾斜的方法有如下一個
關(guān)于數(shù)據(jù)庫translate函數(shù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)-老牌IDC、云計算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計算服務(wù)、IT信息化、AI算力租賃平臺(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
網(wǎng)頁題目:一文了解數(shù)據(jù)庫translate函數(shù)的應(yīng)用和原理(數(shù)據(jù)庫translate函數(shù))
網(wǎng)站地址:http://www.dlmjj.cn/article/djiogos.html


咨詢
建站咨詢
