如何从SQL中的列值中提取特定部分(Redshift平台)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从SQL中的列值中提取特定部分(Redshift平台)相关的知识,希望对你有一定的参考价值。
我在NAME列中有值:
PROD_UPI_FIIT_20180101_121017.TXT
REG_ART_TQ_FIIT_20180203_091215.TXT
STORES_OR_NIIT_20180809_121709.TXT
TIRES_UI_PO_NIIT_20180104_070901.TXT
我必须编写一个查询,以便我可以看到3列中的值,如下所示:
PROD_UPI_FIIT 20180101 121017
REG_ART_TQ_FIIT 20180203 091215
STORES_OR_NIIT 20180809 121709
TIRES_UI_PO_NIIT 20180104 070901
我使用Redshift数据库。
答案
我不是REDSHIFT用户,但你应该能够通过使用SPLIT_PART()函数,或者POSITION(),SUBSTRING()和REVERSE()的组合来实现它。
SELECT split_part(text, '_', 1) + '_'
+ split_part(text, '_', 2) + '_'
+ split_part(text, '_', 3) as field1,
split_part(text, '_', 4) as field2,
split_part(text, '_', 5) as field3
FROM your_table;
我在这个例子中使用过T-SQL,但REDSHIFT使用相同的函数,我假设日期长度= 8,时间长度= 6。
declare @text varchar(100) = 'PROD_UPI_FIIT_20180101_121017.TXT'; select substring(@text, 0, len(@text) - 19) name, substring(@text, len(@text) - 18, 8) date, substring(@text, len(@text) - 9, 6) time GO
name | date | time :------------ | :------- | :----- PROD_UPI_FIIT | 20180101 | 121017
dbfiddle here
以上是关于如何从SQL中的列值中提取特定部分(Redshift平台)的主要内容,如果未能解决你的问题,请参考以下文章