在Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)中,經(jīng)常需要進(jìn)行字符串拼接,在此之前,我們可能使用“||”(雙豎線)進(jìn)行字符串拼接,但是當(dāng)字符串較多時(shí)代碼會(huì)變得冗" />
引言:
在Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)中,經(jīng)常需要進(jìn)行字符串拼接,在此之前,我們可能使用“||”(雙豎線)進(jìn)行字符串拼接,但是當(dāng)字符串較多時(shí)代碼會(huì)變得冗雜且難以維護(hù)。在此,介紹一個(gè)更加優(yōu)雅的方法----使用Oracle函數(shù)“CONCAT”來(lái)進(jìn)行字符串拼接。
什么是CONCAT函數(shù):
CONCAT函數(shù)是Oracle數(shù)據(jù)庫(kù)中的一個(gè)函數(shù),用來(lái)將兩個(gè)或多個(gè)字符串拼接成一個(gè)字符串,其基本語(yǔ)法是:
CONCAT(string1, string2)
其中string1和string2可以是任意兩個(gè)表達(dá)式或是變量,也可以是常量,此函數(shù)會(huì)將這兩個(gè)字符串拼接成一個(gè)字符串,相當(dāng)于SQL Server數(shù)據(jù)庫(kù)中的“+”運(yùn)算符或是MySQL數(shù)據(jù)庫(kù)中的“CONCAT”函數(shù)。但是需要注意的是,在Oracle中,CONCAT函數(shù)只能夠接受兩個(gè)參數(shù),不能夠接受多個(gè)參數(shù),需要多次使用該函數(shù)進(jìn)行字符串拼接時(shí),只能夠?qū)⑵渥鳛樽颖磉_(dá)式嵌入到大的表達(dá)式中,如下所示:
CONCAT( CONCAT(string1, string2) , string3 )
使用CONCAT函數(shù)進(jìn)行字符串拼接的實(shí)現(xiàn)方法:
使用CONCAT函數(shù)進(jìn)行字符串拼接,實(shí)現(xiàn)方法如下:
如下所示:
DECLARE str1 VARCHAR2(10) := 'Hello'; str2 VARCHAR2(10) := 'World'; str3 VARCHAR2(20) := CONCAT(str1,str2);BEGIN dbms_output.put_line(str3);END;
運(yùn)行結(jié)果如下:
HelloWorld
CONCAT函數(shù)和“||”(雙豎線)運(yùn)算符的比較:
在進(jìn)行字符串拼接時(shí),使用CONCAT函數(shù)和“||”運(yùn)算符進(jìn)行字符串拼接的效果是一樣的,但是他們之間還是存在一些區(qū)別,主要體現(xiàn)在以下幾個(gè)方面:
SELECT CONCAT('a','b',null,'d') FROM dual; --返回結(jié)果為null
而在使用“||”運(yùn)算符時(shí),含有NULL值的情況會(huì)變得比較復(fù)雜,因?yàn)槿绻唇拥膬蓚€(gè)字符串中含有NULL值,那么他們的拼接結(jié)果也是NULL值,例如:
SELECT 'abc'||NULL||'def' FROM dual; --返回結(jié)果為null
但是如果拼接字符串中的NULL值被轉(zhuǎn)換成空字符串,那么使用“||”運(yùn)算符仍能夠正確地進(jìn)行字符串拼接,例如:
SELECT 'abc'||''||'def' FROM dual; --返回結(jié)果為abcdef
結(jié)論:
CONCAT函數(shù)是Oracle數(shù)據(jù)庫(kù)中一個(gè)用來(lái)進(jìn)行字符串拼接的函數(shù),能夠?qū)⑷我鈨蓚€(gè)字符串拼接成一個(gè)字符串,其與“||”運(yùn)算符在功能上是一樣的,但是需要注意的是在進(jìn)行字符串拼接時(shí),如果含有NULL值,會(huì)對(duì)返回結(jié)果產(chǎn)生影響。在使用上需要根據(jù)實(shí)際需求進(jìn)行選擇,對(duì)于大量字符串拼接的情況,建議使用“||”運(yùn)算符。
下一篇:option鍵相當(dāng)于windows(開(kāi)啟便捷操作,掌握option鍵的技巧) 下一篇 【方向鍵 ( → )下一篇】
上一篇:深圳漢能投資集團(tuán)董事長(zhǎng)(深圳漢能投資集團(tuán):致力于推動(dòng)中國(guó)能源革命) 上一篇 【方向鍵 ( ← )上一篇】
快搜