oracle 拼接数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 拼接数据相关的知识,希望对你有一定的参考价值。

这几天遇到Ajax取值时的数据传递是String类型,拿到字符串后就进行数据分割,所以需要对数据库查询到的数据进行拼接,

以下就是数据拼接的语句

 select replace(wm_concat(Trim (to_char(round(天数,1),‘0.9‘))),‘,‘,‘-‘) from( 
  SELECT
         MIN(logi_date)
         over(PARTITION BY logi_pi
         ORDER BY logi_date rows
         BETWEEN 1 following AND 2 following) - logi_date 天数
    FROM t_bu_transport_d_move m
   where logi_pi = ‘A4071005‘
   order by logi_date);

其中

1:wm_concat的用法为“行转列”,意思就是把某一列的全部数据放在同一行里,:这就拿到所有需要的列的数据的拼接;

2:replace的用法是替换,replace(‘字符串‘,‘,‘,‘-‘),这一句的意思是把‘字符串’的‘,’替换为‘-’;

3:Trim的用法是去除字符串前后的空格,Trim(‘字符串‘);

4:to_char的用法是转为字符类型,to_char(‘number‘),‘0.9‘))),这一句的意思是把number转换为字符类型,‘0.9‘是样式,且样式都用带‘9‘的字符表示;

5:round是对数字的取值,四舍五入;

6:over函数指定了分析函数工作的数据窗口的大小,这个数据窗口大小可能会随着行的变化而变化,例如:
    over(order by salary)按照salary排序进行累计,order by是个默认的开窗函数
    over(partition by deptno) 按照部门分区
    over(order by salary range between 50 preceding and 150 following)每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150的数据记录
    over(order by salary rows between 50 perceding and 150 following)前50行,后150行
    over(order by salary rows between unbounded preceding and unbounded following)所有行
    over(order by salary range between unbounded preceding and unbounded following)所有行

7:rows BETWEEN 1 following AND 2 following:1在这里不是从第1条记录开始的意思,而是指当前记录的前一条记录,意思是下一条数据减上条数据;















以上是关于oracle 拼接数据的主要内容,如果未能解决你的问题,请参考以下文章

oracle 数据库code 拼接字段如何转换成文字

oracle把查询出的字段拼接在一起

oracle如何把一行数据自动拼接成json格式数据

oracle中拼接查询语句

oracle 如何把一个变量中的字段拼接起来

oracle 字符串拼接慢不慢