让我用一个例子来说明我需要什么。
假设我的表有两列,第一列是主键,第二列是 CLOB。
假设我表中的 clob 列包含以下数据:
Method_name : Test_method_124
Grading: As Specified
Grading Time Period: 2016 Fall
我想找到“评分时间段”之后的字符串。我查询的输出应该是主键(也就是表的第一列)和'2016 Fall'
使用 DBMS_LOB 函数来处理 CLOB。instr()
返回 CLOB 中搜索模式的起始偏移量。substr()
返回一个子字符串,它是CLOB 中给定偏移量的n 个字符。找到更多
SQL> select id,
2 dbms_lob.substr(txt, 30, dbms_lob.instr(txt,'Grading Time Period')+21) as snippet
3 from t23
4 where dbms_lob.instr(txt, 'Grading Time Period') > 0:
ID SNIPPET
---------- ----------
1 2016 Fall
SQL>
这是一种糟糕的数据存储方式。实际上,这应该正确地标准化为表列。但即使是 XML 或 JSON 也会是处理此问题的更好方法。这样看。如果您想提取,Grading
您将如何指定缓冲区以确保您只抓取As Specified
?这是可能的,但它很粗糙。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句