我想获取单列中存在的数据,该列使用双散列(##)分隔。根据我下面提到的查询,我能够只取5条记录而不是6条记录。SQL查询返回只有5条记录,而不是6行
我可以认为我的connectby
表达式存在一些问题。任何帮助是极大的赞赏。
数据
Line1## Line2## Line3 ## Line4 ## Line5 ## Line6 ##
查询用来获取被分隔双哈希##在一条记录记录
复制场景:
create table temp (errormessage varchar2(300))
insert into temp errormessage values('Line1## Line2## Line3 ## Line4 ## Line5 ## Line6 ##')
WITH sample_data
AS (SELECT errormessage AS Error_Message
FROM TEMP)
SELECT Regexp_substr(error_message, ',?([^#]*)', 1, LEVEL, 'i', 1) AS Error_Message
FROM sample_data
WHERE Length(Regexp_substr(error_message, ',?([^#]*)', 1, LEVEL, 'i', 1)) != 0
CONNECT BY (Regexp_count(error_message, '#') + 1 >= LEVEL AND
PRIOR dbms_random.value IS NOT NULL)
ORDER BY LEVEL
错误信息具有要分隔的信息的列。现在,在任何数据库中复制问题都非常容易。
您是否可以发布足够的信息来重现问题 - 例如为表TEMP创建表SQL并使用6条插入语句来设置数据? –
当然,让我试试创建那个 – JustCoder
@TonyAndrews现在你应该能够轻松地复制场景。 – JustCoder