oracle存儲過程拼接字元串函數
1. 怎樣在Oracle中拼接字元串
Oracle的字元串連接用 ||
select substr(t.name0,4) || '00' from table t
在oracle中拼接字元串可用concat函數或者用「||」來實現。
1、concat函數格式:concat(string1,string2)
舉例:將字元a和字元b拼接
語句如下:
1selectconcat('a','b')fromal;結果:
注意事項:concat只能用於2個字元的拼接,如多於2個字元,函數會報錯,但是「||」則可以拼接多個字元。
2. oracle 字元串拼接
1、創建新的測試數據表,或者可以選擇要測試的現有表數據。這只是測試字元串連接,不會影響數據內容。從T_BASE_PROVINCE t中選擇*,其中t.id = 1。
3. oracle 怎麼將多行拼接字元串
我們常常說
用sql將Oracle中同一列的多行記錄拼接成一個字元串是如何實現的:[sql]--
原始數據--
a
111--
b
222--
a
333--
a
444--
b
555--
最終結果--
a
111*333*444SELECTL4.L_TIME,MAX(SUBSTR(L4.分組內容,2))
最終欄位值FROM(SELECTL3.L_TIME,SYS_CONNECT_BY_PATH(L3.L_CONTENT,'*')
AS
分組內容FROM(SELECTL2.L_TIME,L2.L_CONTENT,L2.L_TIME||L2.分組內編號
AS
分組欄位加編號,L2.L_TIME||(L2.分組內編號-1)
AS
上級分組欄位加編號FROM(SELECTL1.L_TIME
--
分組依據,L1.L_CONTENT
--
同一列中
要合並的不同行
的值,ROW_NUMBER()
OVER
(PARTITION
BY
L1.L_TIME
ORDER
BY
L1.L_CONTENT
ASC)
分組內編號FROM
LOGS
L1)
L2)
L3START
WITH
L3.上級分組欄位加編號
LIKE
'%0'CONNECT
BY
PRIOR
L3.分組欄位加編號=L3.上級分組欄位加編號)
L4WHERE
L_TIME='111'GROUP
BY
L4.L_TIME--
ROW_NUMBER()
OVER(PARTITION
BY
A
ORDER
BY
B
DESC)
新列名--
根據A分組,在分組內部根據B排序,而此函數計算的值就表示每組內部排序後的順序編號(組內連續的唯一的)--
SYS_CONNECT_BY_PATH
函數:
第一個參數是形成樹形式的欄位,第二個參數是父級和其子級分隔顯示用的分隔符--
CONNECT
BY
PRIOR
...我們常常說
用SQL將Oracle中同一列的多行記錄拼接成一個字元串是如何實現的:[sql]--
原始數據--
a
111--
b
222--
a
333--
a
444--
b
555--
最終結果--
a
111*333*444SELECTL4.L_TIME,MAX(SUBSTR(L4.分組內容,2))
最終欄位值FROM(SELECTL3.L_TIME,SYS_CONNECT_BY_PATH(L3.L_CONTENT,'*')
AS
分組內容FROM(SELECTL2.L_TIME,L2.L_CONTENT,L2.L_TIME||L2.分組內編號
AS
分組欄位加編號,L2.L_TIME||(L2.分組內編號-1)
AS
上級分組欄位加編號FROM(SELECTL1.L_TIME
--
分組依據,L1.L_CONTENT
--
同一列中
要合並的不同行
的值,ROW_NUMBER()
OVER
(PARTITION
BY
L1.L_TIME
ORDER
BY
L1.L_CONTENT
ASC)
分組內編號FROM
LOGS
L1)
L2)
L3START
WITH
L3.上級分組欄位加編號
LIKE
'%0'CONNECT
BY
PRIOR
L3.分組欄位加編號=L3.上級分組欄位加編號)
L4WHERE
L_TIME='111'GROUP
BY
L4.L_TIME--
ROW_NUMBER()
OVER(PARTITION
BY
A
ORDER
BY
B
DESC)
新列名--
根據A分組,在分組內部根據B排序,而此函數計算的值就表示每組內部排序後的順序編號(組內連續的唯一的)--
SYS_CONNECT_BY_PATH
函數:
第一個參數是形成樹形式的欄位,第二個參數是父級和其子級分隔顯示用的分隔符--
CONNECT
BY
PRIOR
是標示父子關系的對應--
START
WITH
代表你要開始遍歷的的節點
4. Oracle字元串的拆分和拼接
如果是固定的格式,那就好辦,檢測欄位中的「,」分割成四段,然後按要求接起來。
使用函數好些,可以直接調用。
函數寫好:已經測試過。
CREATEORREPLACEFUNCTIONjson_montage(JSONINVARCHAR2)RETURNVARCHAR2IS
In_JSONVARCHAR2(4096);
v_JSONVARCHAR2(4096)DEFAULT'{"comicPkgList":[{J1,J2,J4}],J3}';
v_J1VARCHAR2(4096);
v_J2VARCHAR2(4096);
v_J3VARCHAR2(4096);
v_J4VARCHAR2(4096);
v_splitVARCHAR2(10)DEFAULT',';
lenNUMBER(10)default0;
placeNUMBER(10)default2;
BEGIN
In_JSON:=JSON;
/*
原字元串:
{"IsSmsConfirm":false,"proctID":"MDSP3331111","autoReceive":false,"supCycle":1}
期望轉換後的:
{"comicPkgList":[{"IsSmsConfirm":false,"proctID":"MDSP3331111","supCycle":1}],"autoReceive":false}
*/
In_JSON:=RTRIM(LTRIM(In_JSON));
place:=INSTR(In_JSON,v_split,2,1);
len:=place-1-1;
v_J1:=SUBSTR(In_JSON,2,len);
len:=INSTR(In_JSON,v_split,2,2)-place-1-0;
v_J2:=SUBSTR(In_JSON,place+1,len);
place:=INSTR(In_JSON,v_split,2,2);
len:=INSTR(In_JSON,v_split,2,3)-place-1-0;
v_J3:=SUBSTR(In_JSON,place+1,len);
place:=INSTR(In_JSON,v_split,2,3);
len:=LENGTH(In_JSON)-place-1;
v_J4:=SUBSTR(In_JSON,place+1,len);
v_JSON:='{"comicPkgList":[{'||v_J1||','||v_J2||','||v_J4||'}],'||v_J3||'}';
IFv_JSON='{"comicPkgList":[{J1,J2,J4}],J3}'THEN
v_JSON:='ERROR';
ENDIF;
RETURNv_JSON;
EXCEPTION
WHENNO_DATA_FOUNDTHEN
NULL;
WHENOTHERSTHEN
RAISE;
ENDjson_montage;
/
5. Oracle中將查詢出的多條記錄的某個欄位拼接成一個字元串的方法
1、先創建一個JSONObject對象。
6. oracle在寫存儲過程時怎樣將變數和字元串進行連接
變數直接寫,要連接字元串的話,用 || 這個符號,後面的字元串用單引號引。
7. oracle的字元串連接函數是什麼,如何用
字元串拼接的函數是concat,但是這個函數有且
只有兩個
參數。有時不是那麼好用。
平時我們用的||
用法是select
a||b||c||d
from
table
a,b,c,d可以是欄位可以是字元
8. oracle中字元串用什麼連接
和其他資料庫系統類似,Oracle字元串連接使用「||」進行字元串拼接,其使用方式和MSSQLServer中的加號「+」一樣。
比如執行下面的SQL語句:
SELECT '工號為'||FNumber||'的員工姓名為'||FName FROM T_Employee
WHERE FName IS NOT NULL
除了「||」,Oracle還支持使用CONCAT()函數進行字元串拼接,比如執行下面的SQL語句:
SELECT CONCAT('工號:',FNumber) FROM T_Employee
如果CONCAT中連接的值不是字元串,Oracle會嘗試將其轉換為字元串,比如執行下面的SQL語句:
SELECT CONCAT('年齡:',FAge) FROM T_Employee
與MYSQL的CONCAT()函數不同,Oracle的CONCAT()函數只支持兩個參數,不支持兩個以上字元串的拼接,比如下面的SQL語句在Oracle中是錯誤的:
SELECT CONCAT('工號為',FNumber,'的員工姓名為',FName) FROM T_Employee
WHERE FName IS NOT NULL
運行以後Oracle會報出下面的錯誤信息:
參數個數無效
如果要進行多個字元串的拼接的話,可以使用多個CONCAT()函數嵌套使用,上面的SQL可以如下改寫:
代碼如下:
SELECT CONCAT(CONCAT(CONCAT('工號為',FNumber),'的員工姓名為'),FName) FROM
T_Employee
WHERE FName IS NOT NULL
9. 如何將Oracle中同一列的多行記錄拼接成一個字元串
1、新建php文件。
7、預覽效果如圖。