达梦sql的一些学习,达梦使用oracle的函数方式实现将字符串按照某个符号分割成多行(eg:regexp_substr ;wm_concat;listagg)

本文介绍了数据库中的wm_concat和listagg两个字符串拼接函数,wm_concat默认以逗号分隔,listagg则提供了更灵活的分隔方式。此外,还展示了如何在数据库中创建和删除联合唯一约束。最后,提供了一个在Oracle中将字符串按指定符号拆分成多行的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.wm_concat

字符串拼接函数,默认是以逗号结尾进行分割,并且无法改变。示例:

select
	template_id,
	wm_concat(template_content) as "templateContent"
from SMS_TEMPLATE_ITEM 
group by template_id;

 

2.listagg

字符串拼接函数,由于wm_concat是只能以逗号结尾进行分割,在实际应用中有些许不变,因此又写了一个函数能够灵活变通。

格式:<LISTAGG>(<参数>[,<参数>]) WITHIN GROUP (<ORDER BY 项>)

示例:

select
	TEMPLATE_ID,
	listagg(template_content,';') WITHIN  group (order by TEMPLATE_ID)
	from SMS_TEMPLATE_ITEM
group by TEMPLATE_ID;

 

2.创建联合唯一约束

示例:

alter table table_name add constraint AGE_NAME_UNIQUE unique (AGE,NAME);

删除唯一约束

alter table COUNTER_DATA drop constraint TERM_NO_REP_DATE;

3.达梦使用oracle的函数方式实现将字符串按照某个符号分割成多行

参考:如何在Oracle中将字符串拆分为多行? - 问答 - 云+社区 - 腾讯云 (tencent.com)

WITH
        temp AS
        (
                SELECT 108 NAME, 'test' Project, 'Err1, Err2, Err3' Error FROM DUAL
                
                UNION ALL
                
                SELECT 109, 'test2' Project, 'Err1' FROM DUAL
        )
SELECT DISTINCT
        NAME   ,
        Project,
        trim( regexp_substr ( str, '[^,]+', 1, LEVEL )) str
FROM
        (
                SELECT NAME, Project, Error str FROM temp
        )
        t CONNECT BY instr( str, ',', 1, LEVEL - 1 ) > 0
ORDER BY
        NAME

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值