【发布时间】:2021-11-23 01:31:21
【问题描述】:
我有一个由一组模式组成的字符串。这种模式字符串的一个例子是{yyyy}{mm}{dd}_{country}_{state}_jobsreport.{type}。我用正则表达式替换字符串中的每个模式(例如 - yyyy 被替换为 ([1-9][0-9]{3}) 代表所有可能的年份值)。基于这个正则表达式,我查询并得到一个文件名跟随正则表达式的文件,例如 - 20200331_japan_kyushu_jobsreport.json。
现在我需要将每个标记映射到其对应的模式。例如-
year = 2020
month = 03
date = 31
country = japan
state = kyushu
type = json
注意事项 -
- 模式的顺序 - 模式的顺序不固定。例如,在我们的例子中,模式可能是
{country}-{yyyy}{mm}{dd}-sometext-{state).{type},结果文件名可能是usa-20200331-sometext-florida.txt。 (虽然 yyyymmdd 的相对顺序是固定的)。 - 分隔符 - 没有特定的分隔符。对于
20200331_japan_kyushu_jobsreport.json,分隔符是{"_",".","jobsreport"}。同样对于usa-20200331-sometext-florida.txt,分隔符是{"-",".","sometext"}
如何在 PL/SQL 中处理这种映射?像REGEXP_SUBSTR 这样的普通函数在一组固定的分隔符上工作,而这里的分隔符可以变化。
【问题讨论】:
-
您是否尝试过创建一个函数,将其作为 varchar2 字符串返回?如果不是,您可以很容易地创建一个按顺序连接字符串的函数。只需将字符串添加到到目前为止构建的字符串中。