Listagg函数转换nvarchar2类型字段结果为空,需使用to_char函数转换字段,然后再使用Listagg
2018-01-22 10:38
309 查看
Listagg函数功能:将一列值拼接成一行
Listagg在转换number类型的列非常成功,但在转换nvarchar2类型的列却为空,后来发现nvarchar2类型的列需要使用to_char函数转换一下,再使用Listagg函数就能成功转换
表结构:
create table PRO_PRODUCT_HI_PRICE
(
ID NVARCHAR2(36) not null,
PRODUCT_ID NVARCHAR2(36),
PRICE NUMBER(14,2),
TYPE NVARCHAR2(36),
PROJECT_ID NVARCHAR2(50),
DOC_NUM NVARCHAR2(36),
CREATE_TIME DATE,
UNIT_CODE NVARCHAR2(36)
)
数据:
1. Listagg一个number类型的列--price
select ph.product_id,listagg(ph.price||'元',';')within group( order by ph.create_time desc) asprice
from pro_product_hi_price ph group by ph.product_id
结果:
2. Listagg一个nvarchar2的列--doc_num
select ph.product_id,listagg(ph.doc_num,';') within group( order byph.create_time desc) as doc_num
from pro_product_hi_price ph group by ph.product_id
结果:
3. 将nvarchar2使用to_char函数转换后listagg
selectph.product_id,listagg(to_char(ph.doc_num),';')within group( order by ph.create_time desc) asdoc_num
from pro_product_hi_price ph group by ph.product_id
结果:
4. 使用Listagg合并两列的值,现将两列使用“||”拼接,然后再使用listagg函数
select ph.product_id,listagg(ph.price||'元,'||to_char(ph.doc_num),';') within group( order byph.create_time desc) as priceString
from pro_product_hi_price ph group by ph.product_id
结果:
Listagg在转换number类型的列非常成功,但在转换nvarchar2类型的列却为空,后来发现nvarchar2类型的列需要使用to_char函数转换一下,再使用Listagg函数就能成功转换
表结构:
create table PRO_PRODUCT_HI_PRICE
(
ID NVARCHAR2(36) not null,
PRODUCT_ID NVARCHAR2(36),
PRICE NUMBER(14,2),
TYPE NVARCHAR2(36),
PROJECT_ID NVARCHAR2(50),
DOC_NUM NVARCHAR2(36),
CREATE_TIME DATE,
UNIT_CODE NVARCHAR2(36)
)
数据:
1. Listagg一个number类型的列--price
select ph.product_id,listagg(ph.price||'元',';')within group( order by ph.create_time desc) asprice
from pro_product_hi_price ph group by ph.product_id
结果:
2. Listagg一个nvarchar2的列--doc_num
select ph.product_id,listagg(ph.doc_num,';') within group( order byph.create_time desc) as doc_num
from pro_product_hi_price ph group by ph.product_id
结果:
3. 将nvarchar2使用to_char函数转换后listagg
selectph.product_id,listagg(to_char(ph.doc_num),';')within group( order by ph.create_time desc) asdoc_num
from pro_product_hi_price ph group by ph.product_id
结果:
4. 使用Listagg合并两列的值,现将两列使用“||”拼接,然后再使用listagg函数
select ph.product_id,listagg(ph.price||'元,'||to_char(ph.doc_num),';') within group( order byph.create_time desc) as priceString
from pro_product_hi_price ph group by ph.product_id
结果:
相关文章推荐
- 在oracel表中的一个datatime字段上建了索引,然后使用to_char函数进行检索,能否使用该索引?
- 不知道数据库中表的列类型的前提下,使用JDBC正确的取出数据(取出Result结果集中的字段(不同类型))
- Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- 查询109号员工的员工号,员工名,工资,使用记录类型变量的字段接收查询结果
- mybatis使用char类型字段查询oracle数据库时结果返回null
- linq查询结果转换为指定字段类型的list集合
- 类型转换 -- 使用Unicode下的cannot convert parameter 1 from 'CString' to 'const char *' 解决办法
- mongo 对数据很严格 在使用组装条件的时候需要注意 字段的类型, 分享几个转换的函数
- MSSQL文本型字段使用replace函数,需转换类型
- 解决mybatis使用char类型字段查询oracle数据库时结果返回null问题
- 向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))
- 能够正常使用的,经过测试的java+jquery+webcam调用本地摄像头拍照,然后将拍照结果上传数据库blob字段功能的实现(二)
- Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...今天
- IValueConverter的使用总结(绑定字段时转换类型)
- 在LINQ to Entities 中,使用lambada或linq时, 变量类型需提前转换
- Item 3: 使用 is 或 as 去做类型转换(Prefer the is or as Operators to Casts)
- 解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ...
- C语言学习2:sizeof ,数据类型,scanf,算式操作,赋值与比较操作,逻辑操作,位的操作,条件运算符,特异赋值结果,强制转换,使用变量要注意的