数据库多行拼接到一行Oracle和sqlServer

数据库多行拼接到一行Oracle和sqlServer,第1张

如上图所示:role_cd字段代表权限,portal_cd代表门户菜单,一个role_cd可能对应着多个portal_cd,要想将portal_cd合并到一行。

xmlagg、xmlparse返回的是clob类型的数据,在后台用map接收即可。

如上,想要按照group_id进行分组,然后将user_id关联另一个表中的字段,查询出姓名,然后插入到一条数据中。

如上,圈出来的那个条件必须要加,需要跟外边的表做关联,不然会发现多行数据都是一样的,并没有进行group by。

有多种解决办法。

一、使用“||”连接。二、使用CONCAT()函数连接。

在使用这个函数时,当拼接的值不是字符串时,oracle会自动转换成字符串。需要注意的时,此函数里面只支持两个参数,不支持超过两个的参数,否则会报:参数个数无效。当需要多个参数进行拼接时,可以使用多个concat()函数进行嵌套。

注意:mysql中不能使用||来连接字符串,只能用concat来连接。

1、创建新的测试数据表,或者可以选择要测试的现有表数据。这只是测试字符串连接,不会影响数据内容。从T_BASE_PROVINCE t中选择*,其中t.id = 1。

2、首先介绍下一个||满足连接,||可以一次连接多个字符串,选择t.PROVINCEID ||来自T_BASE_PROVINCE的t.PROVINCE t其中t.id = 1。

3、由||连接除了字段和字段之间的字符串连接之外,还可以将方法连接到常量字符串选择'省:'||来自T_BASE_PROVINCE的t.PROVINCE t其中t.id = 1。

4、您还可以使用CONCAT函数连接到字符串,传入函数字符串1和字符串2,两个参数。参数的方式也支持常量字符串从T_BASE_PROVINCE t中选择CONCAT(t.PROVINCEID,t.PROVINCE),其中t.id = 1。

5、如果要连接的字符串有两个以上的参数,如下例所示,则有4个字符串连接。运行后,测试发现异常,参数无效。从T_BASE_PROVINCE t中选择CONCAT('省ID:',t.PROVINCEID,'省:',t.PROVINCE),其中t.id = 1-  ERROR ORA-00909:参数数量无效。

6、对于上述问题,如果连接参数大于2,则可以选择CONCAT嵌套方法。从T_BASE_PROVINCE t中选择CONCAT(CONCAT('省ID:',t.PROVINCEID),'省:'),t.PROVINCE),其中t.id = 1。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9587562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存