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;
類(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;
類(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;
類(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;
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;
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;
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;
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;
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;
二進(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ō)明:
- 如果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- 如果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ì)被刪除- 如果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;