Oracle SQL-有没有更好的方法用给定的分隔符连接多个字符串?

Oracle SQL-有没有更好的方法用给定的分隔符连接多个字符串?,sql,string,oracle,concatenation,oracle-sqldeveloper,Sql,String,Oracle,Concatenation,Oracle Sqldeveloper,第一个问题,如果这是愚蠢的或非原创的,请提前道歉,但我已经搜索了大约30分钟,没有找到任何关于我确切问题的提及: 有没有一种方法可以连接一系列由给定分隔符分隔的字符串,而不用手动将分隔符放在连接的每一列之间 举个具体的例子,我现在有: SELECT member_no as Member#, (member_gname || ' ' || member_fname) as Name, (member_street || ' ' || member_city || ' ' || member_st

第一个问题,如果这是愚蠢的或非原创的,请提前道歉,但我已经搜索了大约30分钟,没有找到任何关于我确切问题的提及:

有没有一种方法可以连接一系列由给定分隔符分隔的字符串,而不用手动将分隔符放在连接的每一列之间

举个具体的例子,我现在有:

SELECT member_no as Member#,
(member_gname
|| ' '
|| member_fname) as Name,
(member_street
|| ' '
|| member_city
|| ' '
|| member_state
|| ' '
|| member_postcode) AS Address,
member_phone AS Phone,
TO_CHAR(member_joindate, 'dd-Mon-yyyy') as Joined
FROM MEMBER;
它工作得很好,并且产生了我想要的输出,但由于这是为了研究,我不太关心输出,而是更关心.sql文件本身的可读性和“最佳实践”因素。我知道CONCAT只接受两个参数,所以如果不嵌套它们(它们更难看,可读性更低),就无法工作。我在这里完全是天真的,但我希望会有某种神奇的AWESOMECONCAT类型的函数,它可以容纳我需要的所有列,并且允许我指定在这种情况下要分隔它们的字符,一个空格。有什么想法吗


另外,这是一个单独的问题,不值得单独发布,但是有没有办法选择一个列“AS”并给它一个包含空格的名称?例如,“Member”在我看来会更好,而“Join Date”则会更清晰,但我在AS之后尝试了方括号和单引号,这两种方法似乎都不适合SQL developer。

我们仍然可以编写自己的AWESOMECONCAT。不幸的是,Oracle没有内置功能。因为concatenate操作符做的是基本的事情

在别名中使用双引号,可以使列引用区分大小写,甚至可以接受空格。但请注意,对该列/表达式的任何引用都需要使用相同文本的双引号

SELECT member_no as "Member #",
(member_gname
|| ' '
|| member_fname) as Name,
(member_street
|| ' '
|| member_city
|| ' '
|| member_state
|| ' '
|| member_postcode) AS Address,
member_phone AS Phone,
TO_CHAR(member_joindate, 'dd-Mon-yyyy') as "Join Date"
FROM MEMBER;
有没有一种方法可以连接一系列由给定分隔符分隔的字符串,而不用手动将分隔符放在连接的每一列之间

从11g开始进行连接的最佳方法是新的字符串文字技术q'[]'

例如:


从双引号中选择q'[这是一个字符串,'这也是一个字符串'.]'。

不确定为什么我没有尝试双引号!从Java/Lua到SQL,单引号/双引号的事情一直让我感到困惑-不要让我开始了解我对| | |表示连接和不连接的感觉,或者…q运算符用于连接??逗号误导了你!!啊,你说得对。这些是列名,而不是文字。它无论如何都需要连接运算符| |。