用于选择和提取10个字符的SQL,以及Oracle Clob中子字符串后的10个字符

时间:2017-06-26 19:28:11

标签: sql oracle oracle11g oracle-sqldeveloper oracle12c

让我们考虑下面的文字示例:

  

Lorem Ipsum只是印刷和排版行业的虚拟文本。 Lorem Ipsum一直是业界标准的虚拟文本   自16世纪以来,当一个未知的打印机采用了类型的厨房   把它拼凑成一本样本书。它不仅幸存下来   五个世纪,也是电子排版的飞跃,   基本保持不变。它在20世纪60年代随着推广而普及   释放包含Lorem Ipsum段落的Letraset表格,以及   最近使用像Aldus PageMaker这样的桌面出版软件   包括Lorem Ipsum的版本。

如何提取前10个字符和子字符串后的10个字符,让我们说“Lorem Ipsum”从Oracle的上一段?数据类型是clob。我一直在尝试使用SUBSTR等Oracle功能,但到目前为止还没有运气。感谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将regexp_replace与反向引用结合使用:

select 
    regexp_replace(col, '.*?(.{0,10}Lorem Ipsum.{0,10}).*?','\1')
from t;

此处.匹配任何字符,?用于延迟匹配。对于给定的输入,它产生:

Lorem Ipsum is simplyindustry. Lorem Ipsum has been ontaining Lorem Ipsum passages,rsions of Lorem Ipsum.