首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle 9i中检索单行中的多行

在Oracle 9i中检索单行中的多行
EN

Stack Overflow用户
提问于 2019-03-05 21:20:26
回答 2查看 43关注 0票数 0

使用Oracle 9i

描述mtitem0 (表)

代码语言:javascript
复制
Materailcd          Char(10),
Technicalspecs   VarChar2(1000)

查询:

代码语言:javascript
复制
Select Materailcd, TechnicalSpecs
From Mtitem0
Where Materailcd  = '0100000121'

MATERIALCD TECHNICALSPECS
---------- ---------------------------------------
0100000121 INDUSTRIAL GRADE SALT
               SPECIFICATIONS:-
               A) MOISTURE  MAX: 4.0
                PERCENT BY MASS.
               B) MATTER INSOLUBLES IN WATER MAX:0.50 

我想在一行中检索列'TechnicalSpecs‘,如下所示:

代码语言:javascript
复制
MATERIALCD       TECHNICALSPECS
--------------------       ---------------------------------------
0100000121          INDUSTRIAL GRADE SALT SPECIFICATIONS:-  A) MOISTURE  MAX: 4.0  PERCENT BY MASS.

请给我一个想法,并在这方面帮助我.

问候

康复者

EN

回答 2

Stack Overflow用户

发布于 2019-03-05 21:57:56

我不能访问oracle9i,但我相信下面的代码可以工作。你能试一下让我知道吗?

代码语言:javascript
复制
 select Materailcd     , ltrim(sys_connect_by_path(TechnicalSpecs,','),',') as staff
    from   ( select Materailcd
                  , TechnicalSpecs
                  , row_number() over (partition by Materailcd order by TechnicalSpecs) as seq
             from Mtitem0 )
    where  connect_by_isleaf = 1
    connect by seq = prior seq +1 and Materailcd = prior Materailcd
    start with seq = 1;  
票数 0
EN

Stack Overflow用户

发布于 2019-03-07 00:22:53

我猜您的TECHNICALSPECS列中有换行符。只需将它们替换为一个空格。

代码语言:javascript
复制
Select Materailcd, replace(TechnicalSpecs, chr(10),' ') TechnicalSpecs
From Mtitem0
Where Materailcd  = '0100000121'

如果它是从windows客户端输入的,那么为了安全起见,您可能也有CR字符,因此也要删除这些字符:

代码语言:javascript
复制
Select Materailcd, replace(replace(TechnicalSpecs, chr(10),' '),chr(13)) TechnicalSpecs
From Mtitem0
Where Materailcd  = '0100000121' 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55003854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档