sql - SQL 子字符串 REGEX 模式匹配 (TERADATA)
问题描述
我有一列说LINES
下面的字符串模式。我想从字符串中提取日期。例如,对于每一行,我都需要日期,即20201123
或20201124
无论哪种情况。由于日期位于不同的位置,因此我无法真正使用substring
它。我该怎么做?是否有一个更简单的 REGEX 方法substring
可以应用于此。
这是一个简单的复制代码进行测试。
create volatile table TEST
(LINES VARCHAR(1000) CHARACTER SET LATIN NOT CASESPECIFIC)
ON COMMIT PRESERVE ROWS;
insert into TEST values('path/to/file/OVERALL_GOTO_Datas.20201123.dat');
insert into TEST values('path/to/file/endartstmov20201124.20201124.dat');
insert into TEST values('path/to/file/TESTDEV20201123.20201123.5.0014.CHK.dat');
insert into TEST values('path/to/file/DEVTOTES20201124.20201124.5.0109.CHK.dat');
insert into TEST values('path/to/file/STORE_PARTNER.20201124.20201124.0.0501.CHK.dat');
SELECT * FROM TEST;
感谢您的回复。谢谢。
解决方案
你应该能够使用这个正则表达式:
SELECT REGEXP_SUBSTR(LINES, '(:?\.([0-9]{8})\.)')
见:https ://regex101.com/r/WRqEmY/2
另一种方法是使用regexp_extract
(https://teradata.github.io/presto/docs/148t/functions/regexp.html)
SELECT regexp_extract(LINES, '(?:\.([0-9]{8})\.)', 1)
推荐阅读
- python - Python:连续超过一定水平
- pandas - 熊猫创建一个具有其他值的新列
- css - 仅更改速记属性的一部分
- python - 如何从python中的数组列表中删除一个数组
- elasticsearch - 如何在 ElasticSearch Head Chrome 扩展中运行术语查询?
- postgresql - Postgres 12:为什么存储过程在运行多次后开始变慢
- python - 如何修复此错误:需要以下参数:--in-path、--out-path
- r - 基于单选按钮输入更新叶绿素图
- pyspark - 动态填充pyspark数据框中列中的行
- arrays - React - useState Hook with Context Api - 无法将状态数组复制到另一个状态数组