Oracle函數(shù)之字符函數(shù)


1. 拼接字符串函數(shù)concat(str1,str2)

  • 功能:拼接兩個(gè)字符串
  • 參數(shù):str1,str2 字符串(數(shù)值會(huì)自動(dòng)轉(zhuǎn)換),只能有2個(gè)參數(shù)
  • 返回:str1和str2拼接在一起的字符串

SQL和執(zhí)行結(jié)果:

SELECT CONCAT(123, 'abc'),
       CONCAT('abc', 'def'),
       123 || 'ghi' || 'jkl' || 'mno'
  FROM dual;
concat(c1,c2) , ||

類(lèi)似的:還可以用||連接字符串跨释,concat(str1,str2)str1||str2都能拼接字符串
不同的是,concat()函數(shù)只能拼接2個(gè)字符串厌处,||可以連接多個(gè)字符串


2. 查找字符串位置instr(str1,str2[,pos][,nth])

  • 功能:在str1中查找str2的位置
  • 參數(shù):
    str1鳖谈,str2 字符串,
    pos:數(shù)值型參數(shù)嘱蛋,表示從第pos個(gè)字符的位置開(kāi)始查找蚯姆,默認(rèn)值為1五续,表示從第1個(gè)字符開(kāi)始查找
    nth:數(shù)值型參數(shù),表示第nth次出現(xiàn)龄恋,默認(rèn)值為1疙驾,表示第1次出現(xiàn)str2
  • 返回:按條件查找到的str2在str1中的位置,即str2從str1的第幾位開(kāi)始(漢字算作1個(gè)字符)郭毕,若找不到則返回0

SQL和執(zhí)行結(jié)果:

SELECT INSTR('一二三abc123abcabc', 'bc'),
       INSTR('一二三abc123abcabc', 'bc', 6),
       INSTR('一二三abc123abcabc', 'bc', 6, 2),
       INSTR('一二三abc123abcabc', 'bc', 6, 3)
  FROM dual;
instr(str1,str2[,pos][,nth])

類(lèi)似的函數(shù)有instrb(str1,str2[,pos][,nth])它碎,區(qū)別在于漢字/全角字符算2個(gè)字符


3. 計(jì)算字符串長(zhǎng)度length(str1)

  • 功能:計(jì)算字符串str1的長(zhǎng)度
  • 參數(shù):str1 字符串
  • 返回:字符串str1的長(zhǎng)度,漢字算作1個(gè)字符

SQL和執(zhí)行結(jié)果:
SELECT LENGTH('一二三123abc') FROM dual;

length(str1)

類(lèi)似的函數(shù)有l(wèi)engthb(str1)显押,漢字/全角字符算2個(gè)字符
其他如lengthc()扳肛,length2(),length4()較少使用


4. 字符補(bǔ)到指定長(zhǎng)度

4.1 左側(cè)補(bǔ)位函數(shù)lpad(str1,len[,pad])

  • 功能:在str1左側(cè)用pad字符補(bǔ)位到整個(gè)字符串長(zhǎng)度為len
  • 參數(shù):str1 字符串乘碑,len 數(shù)值挖息,pad 字符串
  • 返回:在str1基礎(chǔ)上,用pad補(bǔ)位到len長(zhǎng)度的字符串

4.2 右側(cè)補(bǔ)位函數(shù)rpad(str1,len[,pad])

  • 功能:在str1右側(cè)用pad字符補(bǔ)位到整個(gè)字符串長(zhǎng)度為len
  • 參數(shù):str1 字符串兽肤,len 數(shù)值套腹,pad 字符串(不填默認(rèn)用空格填充)
  • 返回:在str1基礎(chǔ)上,用pad補(bǔ)位到len長(zhǎng)度的字符串

SQL和執(zhí)行結(jié)果:

SELECT LPAD(123, 10),
       LPAD(123, 10, ' '),
       LPAD(123, 10, '0'),
       LPAD('abc', 10, 'x'),
       LPAD('abc', 10, 'xy')
  FROM dual
UNION
SELECT RPAD(123, 10),
       RPAD(123, 10, ' '),
       RPAD(123, 10, '0'),
       RPAD('abc', 10, 'x'),
       RPAD('abc', 10, 'xy')
  FROM dual;
上lpad(str1,len[,pad])资铡,下rpad(str1,len[,pad])

5. 刪除字符

5.1 刪除左側(cè)字符串ltrim(str1[,tset])

  • 功能:從str1左側(cè)第一位開(kāi)始刪除tset字符电禀,直到遇到第一個(gè)非tset字符
  • 參數(shù):str1 字符串,tset 字符串(不寫(xiě)則默認(rèn)為空格)
  • 返回:在str1基礎(chǔ)上笤休,刪除左側(cè)tset字符后的字符串
  • 過(guò)程:以tset字符串的每一個(gè)字符為一個(gè)外循環(huán)尖飞,以str1的每一個(gè)字符為內(nèi)循環(huán),從str1左側(cè)開(kāi)始匹配店雅,當(dāng)前循環(huán)的字符相同則從str1中刪除該字符政基,否則跳出當(dāng)前循環(huán)

SQL和執(zhí)行結(jié)果:

SELECT LTRIM('   ffff7777ebd'),
       LTRIM('   ffff7777ebd', ' '),
       LTRIM('   ffff7777ebd', ' ebd'),
       LTRIM('   ffff7777ebd', ' f'),
       LTRIM('   ffff7777ebd', ' f7'),
       LTRIM('   ffff7777ebd', ' f7ebd')
  FROM dual;
ltrim(str1[,tset])

5.2 刪除右側(cè)字符rtrim(str1[,tset])

  • 功能:從str1右側(cè)第一位開(kāi)始刪除tset字符,直到遇到第一個(gè)非tset字符
  • 參數(shù):str1 字符串底洗,tset 字符串
  • 返回:在str1基礎(chǔ)上腋么,刪除右側(cè)tset字符后的字符串
  • 過(guò)程:以tset字符串的每一個(gè)字符為一個(gè)外循環(huán),以str1的每一個(gè)字符為內(nèi)循環(huán)亥揖,從str1右側(cè)開(kāi)始匹配珊擂,當(dāng)前循環(huán)的字符相同則從str1中刪除該字符,否則跳出當(dāng)前循環(huán)

SQL和執(zhí)行結(jié)果:

SELECT RTRIM('ffff7777ddd   '),
       RTRIM('ffff7777ddd   ', ' '),
       RTRIM('ffff7777ddd   ', ' f'),
       RTRIM('ffff7777ddd   ', ' d'),
       RTRIM('ffff7777ddd   ', ' d7'),
       RTRIM('ffff7777ddd   ', ' d7f')
  FROM dual;
rtrim(str1,len[,pad])

5.3 刪除兩側(cè)字符trim(c1 from str2)

  • 功能:從str2字符串兩側(cè)同時(shí)刪除c1字符
  • 參數(shù):
    c1 字符串型费变,只能1位長(zhǎng)度摧扇,可以是空格或任意字符,漢字算1個(gè)字符挚歧,默認(rèn)為空格
    str2 字符串型扛稽,任意字符串
  • 返回:在str2基礎(chǔ)上,刪除兩側(cè)c1字符后的字符串

SQL和執(zhí)行結(jié)果:

SELECT TRIM('   fff  777  ddd   '),
       TRIM(' ' FROM '   fff  777  ddd   '),
       TRIM('f' FROM 'fff777ddd'),
       TRIM('7' FROM 'fff777ddd'),
       TRIM('南' FROM '南京南站南')
  FROM dual;
trim(str1 from c2)

6. 替換字符串replace(src-str,old-str[,new-str])

  • 功能:在src-str字符串中滑负,用new-str替換old-str在张,如無(wú)new-str用含,則直接刪除old-str
  • 參數(shù):
    src-str 字符串型,原字符串帮匾,
    old-str 字符串型啄骇,希望替換掉的字符串
    new-str 字符串型,用來(lái)替換old-str瘟斜,如無(wú)new-str缸夹,則直接刪除old-str
  • 返回:在src-str中,用new-str替換old-str后的字符串

SQL和執(zhí)行結(jié)果:
select replace('南京南站南','南') , replace('南京南站南','南','北'),replace('南京南站南','南京','北京') from dual;

replace(src-str,old-str[,new-str])


7. 截取字符串substr(str,pos[,len])

  • 功能:在str字符串中螺句,從pos位置開(kāi)始截取字符串(漢字/全角字符虽惭,算1個(gè)字符),
  • 參數(shù):
    str 字符串型蛇尚,截取前的字符串芽唇,
    pos 數(shù)值型,從左側(cè)第pos位開(kāi)始截取字符串佣蓉,如果為小數(shù)則截取整數(shù)部分披摄,如果為負(fù)數(shù)則從右側(cè)開(kāi)始計(jì)數(shù)
    len 數(shù)值型,可選參數(shù)勇凭,表示截取長(zhǎng)度為len的字符串,不寫(xiě)則默認(rèn)截取到str字符串末尾的所有字符义辕。如果len的值≤0虾标,則返回空白字符串
  • 返回:從str中第pos位開(kāi)始截取的長(zhǎng)度為len的字符串

SQL和執(zhí)行結(jié)果:

SELECT SUBSTR('ab12南京南34cd', 5),
       SUBSTR('ab12南京南34cd', -5),
       SUBSTR('ab12南京南34cd', 2.2, 3),
       SUBSTR('ab12南京南34cd', 3.8, 3),
       SUBSTR('ab12南京南34cd', 2.2, 0),
       SUBSTR('ab12南京南34cd', 3.8, -1)
  FROM dual;
substr(str,pos[,len])

二進(jìn)制截取字符串substrb(str,pos[,len])
功能和參數(shù):和substr()函數(shù)一樣
區(qū)別:漢字/全角字符算2個(gè)字符


8. 替換對(duì)應(yīng)字符串translate(str,src,dest)

  • 功能:把str字符串中,src字符串一一對(duì)應(yīng)替換成dest字符串
  • 參數(shù):
    str 字符串型灌砖,替換前的字符串
    src 字符串型璧函,替換掉的字符串src
    dest 字符串型,用于替換src字符串的字符串
  • 返回:從str中第pos位開(kāi)始截取的長(zhǎng)度為len的字符串
  • 說(shuō)明:
  1. 如果src和dest字符串長(zhǎng)度相同基显,則將src和dest所有字符依次一一對(duì)應(yīng)的方式替換蘸吓,
    例如TRANSLATE('aabb', 'ab', 'AZ'),把所有a對(duì)應(yīng)替換為A撩幽,所有b對(duì)應(yīng)替換為Z
    特別的库继,如果出現(xiàn)重復(fù)字符并且對(duì)應(yīng)不同內(nèi)容,后出現(xiàn)的對(duì)應(yīng)字符會(huì)被忽略窜醉,
    例如TRANSLATE('1122', '112', '345')宪萄,1對(duì)應(yīng)3,第二個(gè)1對(duì)應(yīng)4會(huì)被忽略榨惰,2對(duì)應(yīng)5
  2. 如果src比dest長(zhǎng)拜英,那么src中比dest長(zhǎng)的字符,也就是在dest沒(méi)有對(duì)應(yīng)字符的內(nèi)容琅催,會(huì)被刪除
    例如TRANSLATE('南京南站', '南京站', '西安')居凶,src中的“站”在dest中沒(méi)有對(duì)應(yīng)字符虫给,則src中的“站”會(huì)被刪除
  3. 如果src比dest短,則dest中多余的字符會(huì)被忽略
    例如TRANSLATE('南京南站', '南京', '西安大略')侠碧,src的“南京”狰右,會(huì)被替換為dest的“西安”,dest的“大略”會(huì)被忽略

SQL和執(zhí)行結(jié)果:

SELECT TRANSLATE('aabb', 'ab', 'AZ'),
       TRANSLATE('1122', '112', '345'),
       TRANSLATE('南京南站', '南京站', '西安'),
       TRANSLATE('南京南站', '南京', '西安大略')
  FROM dual;
translate(str,src,dest)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末舆床,一起剝皮案震驚了整個(gè)濱河市棋蚌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挨队,老刑警劉巖谷暮,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盛垦,居然都是意外死亡湿弦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)腾夯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颊埃,“玉大人,你說(shuō)我怎么就攤上這事蝶俱“嗬” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵榨呆,是天一觀(guān)的道長(zhǎng)罗标。 經(jīng)常有香客問(wèn)我,道長(zhǎng)积蜻,這世上最難降的妖魔是什么闯割? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮竿拆,結(jié)果婚禮上宙拉,老公的妹妹穿的比我還像新娘。我一直安慰自己丙笋,他們只是感情好谢澈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著不见,像睡著了一般澳化。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稳吮,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天缎谷,我揣著相機(jī)與錄音,去河邊找鬼。 笑死列林,一個(gè)胖子當(dāng)著我的面吹牛瑞你,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播希痴,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼者甲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了砌创?” 一聲冷哼從身側(cè)響起虏缸,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嫩实,沒(méi)想到半個(gè)月后刽辙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甲献,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年宰缤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晃洒。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慨灭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出球及,到底是詐尸還是另有隱情氧骤,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布桶略,位于F島的核電站语淘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏际歼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一姑蓝、第九天 我趴在偏房一處隱蔽的房頂上張望鹅心。 院中可真熱鬧,春花似錦纺荧、人聲如沸旭愧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)输枯。三九已至,卻和暖如春占贫,著一層夾襖步出監(jiān)牢的瞬間桃熄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工型奥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞳收,地道東北人碉京。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像螟深,于是被迫代替她去往敵國(guó)和親谐宙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容