这是关于 Oracle 11g 数据库的问题。
我正在尝试查询 Atlassian Confluence 日历表。它将整个日历的日历条目存储到单行中的单个值中,这是 iCal 废话的巨大球团。
如果每个条目中的字段顺序一致,那么我的正则表达式 fu 将足够强大,可以解析出我正在搜索的特定条目......但由于我需要搜索日期、描述和摘要,所有其中显然可以在 BEGIN/END VEVENT 中以任何顺序排列,这是不可能的。我有一半的把握,即使向前和向后看也是不可能的。
是否有一个 sql(不是 pl-sql)结构可以将这个单个字符串/blob 值分成多行,以便我可以执行以下操作:
select * from (chopped up value) where x like '%something%';
这将使它与 wm_concat() 或 group_concat 有点相反...
一个典型的条目看起来像这样(它已经有 50 或 60 个):
BEGIN:VEVENT
UID:20130724T153322Z--922125579@atlassianzzz.zzz.edu
SUMMARY:Richard Smichard
ATTENDEE;X-CONFLUENCE-USER=rismich:https://atlassianzzz.zzz.edu/c
onfluence/display/~rismich
LOCATION:
DESCRIPTION:Primary
DTSTART;VALUE=DATE:20130726
DTEND;VALUE=DATE:20130729
DTSTAMP:20130724T153322Z
CREATED:20130724T153322Z
LAST-MODIFIED:20130724T153322Z
ORGANIZER;X-CONFLUENCE-USER=botard:MAILTO:botard@zzz.edu
SEQUENCE:0
END:VEVENT
我无法使用 PL-SQL 或构建适当的解析器,因为它将运行的环境无法做到这一点。我开始运行一个 select 语句,它要么返回我正在寻找的值,要么不返回。
此外,NoSQL 很烂。重要时刻。