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、预览效果如图。