Sql 在一个单元格中创建两行

Sql 在一个单元格中创建两行,sql,oracle,Sql,Oracle,我有一个sql代码,它可以检索一行以上的内容,有没有办法将这两行合并成一行 select revertrsn from LN08PENm where aano in(754,870,1136,1138,1139,1140) 我正在检索的行中的数据如下所示: 根据Mohammad Sulaiman的批准 邮寄日期:07/04/2009 我希望它在一行中,像这样: 根据Mohammad Sulaiman 2009年4月7日的邮件批准 您可以将换行符\n或字符(10)替换为空白字符。 例如: se

我有一个sql代码,它可以检索一行以上的内容,有没有办法将这两行合并成一行

select revertrsn  from LN08PENm where aano in(754,870,1136,1138,1139,1140)
我正在检索的行中的数据如下所示:

根据Mohammad Sulaiman的批准

邮寄日期:07/04/2009

我希望它在一行中,像这样:

根据Mohammad Sulaiman 2009年4月7日的邮件批准


您可以将换行符
\n
字符(10)
替换为空白字符
。 例如:

select replace(revertrsn,chr(10),' ') as only_one_line
  from LN08PENm 
 where aano in(754,870,1136,1138,1139,1140)

请注意,throw-a-line指令因操作系统而异。在Windows上,您需要检查回车,然后换行:
chr(13)| | chr(10)
。令人困惑的是,我们需要关注的操作系统是加载数据的操作系统,而不是我们用于输出的操作系统

您可以将换行符
\n
字符(10)
替换为空白字符
。 例如:

select replace(revertrsn,chr(10),' ') as only_one_line
  from LN08PENm 
 where aano in(754,870,1136,1138,1139,1140)

请注意,throw-a-line指令因操作系统而异。在Windows上,您需要检查回车,然后换行:
chr(13)| | chr(10)
。令人困惑的是,我们需要关注的操作系统是加载数据的操作系统,而不是我们用于输出的操作系统

清理这类混乱的一个好方法就是通常替换非打印控制代码

update tab
set    col =  regexp_replace(col,'[:cntrl:]','')
where  col != regexp_replace(col,'[:cntrl:]','')

清理这种混乱的一个好方法就是一般地替换非打印控制代码

update tab
set    col =  regexp_replace(col,'[:cntrl:]','')
where  col != regexp_replace(col,'[:cntrl:]','')

好的,但是我可以用sql plus来做吗。@sofian-这不是PL/sql:REPLACE()和CHR()都是Oracle内置的sql(并且已经有几十年了)。在SQL*Plus中不能这样做,因为字符串操作超出了它的能力。我写的是MySQL服务器的SQL。给我5分钟的时间,我会编辑答案以包含Oracle SQLOK,但我可以使用sql plus吗。@sofian-这不是PL/sql:REPLACE()和CHR()都是Oracle sql内置的(已经有几十年了)。在SQL*Plus中不能这样做,因为字符串操作超出了它的能力。我写的是MySQL服务器的SQL。给我5分钟的时间,我将编辑答案以包括Oracle SQL用NULL替换换行符可能会损坏数据,例如,如果地址是这样的:
1234 Main Street\nSheboygan
(我经常看到类似的内容)。所以一个空间可能更安全。但在某些情况下,这也是不可取的。数据清理(我知道你知道)是一项充满困难的任务。是的,确实如此。如果控制字符(或一组连续的控制字符)两边都没有空格,则用空格替换会更清楚。用NULL替换换行可能会损坏数据,例如,如果地址是这样的:
1234 Main Street\nSheboygan
(我经常看到类似的情况)。所以一个空间可能更安全。但在某些情况下,这也是不可取的。数据清理(我知道你知道)是一项充满困难的任务。是的,确实如此。如果控制字符(或一组连续的控制字符)两侧没有空格,则替换为空格将更清晰。