date与substr-like查询一起显示不正确(&L)

gc0ot86w  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(269)

我想把它弄出来,但我发现我用的substr不正确,
例如,我的所有列都显示hdfs://asdasda/asdas/fdsfdsfd/received_files/asdasd_20191231_11122333_123456789_co.dat
其中一些有更多的字符,所以为了让我得到列中的确切日期是不一致的,如果我使用子字符串
有些将返回20191230,但有些将返回2020123
我们如何解决这个问题?
我试图只显示数据,这是使用sql语言或色调,当我输入脚本时,

select SUBSTR(input_file_name, LENGTH(input_file_name) - 44, 9) from th_ingestion_status limit 100

我觉得我的like和substr语句的脚本不正确

zed5wv10

zed5wv101#

如果你想把第一个8位数的序列用下划线括起来,用 regexp_extract() :

select regexp_extract(filename, '_([0-9]{8})_', 1)

如果你在最后一次之后需要这个 / ,然后:

select regexp_extract(filename, '_([0-9]{8})_[^/]*$', 1)
gev0vcfq

gev0vcfq2#

请使用下面的查询,也请注明您正在使用的数据库,以便提供相关查询

substr(column_name, instr(column_name, '_', 1, 2) +1, 6)

oracle测试用例:

select 'hdfs://asdasda/asdas/fdsfdsfd/received_files/asdasd_20191231_11122333_123456789_CO.dat', substr('hdfs://asdasda/asdas/fdsfdsfd/received_files/asdasd_20191231_11122333_123456789_CO.dat', instr('hdfs://asdasda/asdas/fdsfdsfd/received_files/asdasd_20191231_11122333_123456789_CO.dat', '_', 1, 2) +1, 6)

从双重的;

相关问题