热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

concatoracledb2,ConcatSQL中的所有列值

在SQLServer:SELECTcol1AS[text()]FROMfooFORXMLPATH()在MySQL:SELECTGROUP_CONCAT(

在SQL Server :

SELECT col1 AS [text()] FROM foo FOR XML PATH ('')

在MySQL :

SELECT GROUP_CONCAT(col1 SEPARATOR '') FROM foo

在PostgreSQL :

SELECT array_to_string ( ARRAY ( SELECT col1 FROM foo ), '' )

在Oracle :

SELECT * FROM ( SELECT col1, ROW_NUMBER() OVER(ORDER BY 1) AS rn FROM foo MODEL DIMENSION BY (rn) MEASURES (col1, col1 AS group_concat, 0 AS mark) RULES UPDATE ( group_concat[rn > 1] = group_concat[CV() - 1] || col1[CV()], mark[ANY] = PRESENTV(mark[CV() + 1], 0, 1) ) ) WHERE mark = 1

Quassnoi的Oracle解决scheme相当出色,但我发现使用SYS_CONNECT_BY_PATH()而不是MODEL魔术更简单 。

SELECT REPLACE(MAX(SYS_CONNECT_BY_PATH(foo, '/')), '/', '') conc FROM ( SELECT T_FOO.*, ROW_NUMBER() OVER (ORDER BY FOO) R FROM T_FOO ) START WITH r=1 CONNECT BY PRIOR r = r-1;

假设它是一列有多个值,这种方法适用于MS SQL Server(我不能说其他系统)。

declare @result varchar(max) set @result = '' select @result = @result + RES from (query goes here)

mysql的方式:

select group_concat(somecolumn separator '') from sometable

这是你正在寻找的答案。 我有一种感觉,解决scheme在CONNECT BY操作中,我刚才没有使用过SYS_CONNECT_BY_PATH伪列(显示树中节点的完整path,用“/”分隔节点名称)。 假设你之前的一组“foo”值是表中的多行,按列“myKey”分组,例如:

myKey foo -------- ---------- group 1 apple group 1 orange group 1 pear group 2 ape group 2 bear group 2 kitten

您可以将数据视为树模式,并假设每个组的值代表分支上的节点。 在这种情况下,你会这样做:

SELECT myKey , SUBSTR(MAX(REPLACE(SYS_CONNECT_BY_PATH(foo, '/') ,'/' ,' ' ) ) ,2 ) FooConcat FROM ( SELECT MyKey , Foo , row_number() OVER (Partition by myKey order by myKey) NodeDepth FROM MyTable ) START WITH NodeDepth = 1 CONNECT BY PRIOR myKey = myKey AND PRIOR NodeDepth = NodeDepth -1 GROUP BY myKey ;

当然,连接值的顺序是随机的, 如果你的表有另一个列(“栏”),你可以使用作为一个上升和连续的sorting字段,你可以免去子查询(只存在一个虚拟的深度树),并直接使用表,用barreplaceNodeDepth。

编辑:自8.4.0版本以来,CUBRID提供了90%与MySQL的兼容性 。 因此,它支持与MySQL中语法相似的GROUP_CONCAT :

CREATE TABLE t(i int); INSERT INTO t VALUES (4),(2),(3),(6),(1),(5); SELECT GROUP_CONCAT(i*2+1 ORDER BY 1 SEPARATOR '') FROM t; group_concat(i*2+1 order by 1 separator '') ====================== '35791113'

相当强大,不是吗? 以下是CUBRID本地支持的替代解决scheme 。

SELECT MAX(SYS_CONNECT_BY_PATH(s_name, '')) AS conc_s_name FROM ( SELECT ROWNUM AS r, s_name FROM code ) AS res START WITH r = 1 CONNECT BY PRIOR r = r - 1;

非常有趣的是,这种连接CUBRID中的不同行列值的方式几乎和Oracle提供的@devio一样。 在CUBRID中,它看起来更容易一些。

select cast(res1 as varchar)+cast(res2 as varchar)+cast(res3 as varchar) as fooconcat from foo

如果列已经是string,则不需要投射,只需执行以下操作:

select res1 + res2 + res3 as fooconcat from foo

对于来自多行的数据,请使用PIVOT 。

连接string取决于你正在使用的数据库(你havnt提到你的问题,所以在这里去了什么版本)…

在Oracle和DB2中,您可以使用CONCAT函数… CONCAT(string, string)

SQL Server中可以使用'+'运算符… string1 + string2 + string3

在MySQL中,它是CONCAT(string, string... n_string)

最后在PostgreSQL中是TEXTCAT(string, string) …

…我从这个有点酷的书中得到了这个,我已经坐在O'Reilly的桌面SQL Pocket Guide上了…看看吧!

🙂

这可能不是你要找的东西,但是我过去的运气好像是这样的:

SELECT MAX(DECODE(fookey, 1, foo, NULL)) || MAX(DECODE(fookey, 2, foo, NULL)) || MAX(DECODE(fookey, 3, foo, NULL)) || MAX(DECODE(fookey, 4, foo, NULL)) , groupingvalue FROM mytable GROUP BY groupingvalue;

它是独立于平台的,当你有一个任意的,但有限的foo值时,它运行的很好,而且它们是基于其他一些关键值的。 例如,如果您有一张发票表,并且您希望从单行上的发票中看到所有行时间,并且有5个行项目的上限,则它将如下所示:

SELECT MAX(DECODE(lineno, 1, foo, NULL)) || ', ' || MAX(DECODE(lineno, 2, foo, NULL)) || ', ' || MAX(DECODE(lineno, 3, foo, NULL)) || ', ' || MAX(DECODE(lineno, 4, foo, NULL)) || ', ' || MAX(DECODE(lineno, 5, foo, NULL)) , invoiceid FROM lineitem GROUP BY invoiceid;

SQL Server 2008 R2:

declare &#64;ColumnNameList VARCHAR(MAX) SELECT &#64;ColumnNameList &#61; COALESCE(&#64;ColumnNameList &#43;&#39;,&#39; ,&#39;&#39;) &#43; ColumnName FROM <

从[Table]中select([col1] &#43;&#39;&#xff0c;&#39;&#43; [col2] &#43;&#39;&#xff0c;&#39;&#43; [col3] &#43;&#39;&#xff0c;&#39;&#43; [col4])作为[MyCol]



推荐阅读
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
author-avatar
Jessie-GWU_552
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有