You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Presto从文件名中提取文件扩展名?

Presto 提取文件名扩展名的实现方案

方案1:数组拆分法(通用场景)

直接通过拆分文件名取最后一段,适配所有带合法.的文件名,包括带多个.的文件名(如report.v2.2024.xlsx):

-- 基础写法
SELECT 
  split_to_array(filename, '.')[cardinality(split_to_array(filename, '.'))] AS file_ext
FROM your_table;

-- 增加无后缀兼容+长度校验(匹配你要求的2-4位扩展名)
SELECT 
  CASE 
    WHEN strpos(filename, '.') = 0 THEN NULL
    ELSE split_to_array(filename, '.')[cardinality(split_to_array(filename, '.'))]
  END AS file_ext
FROM your_table
WHERE length(split_to_array(filename, '.')[cardinality(split_to_array(filename, '.'))]) BETWEEN 2 AND 4;

方案2:正则提取法(精准匹配后缀长度)

直接通过正则捕获末尾符合长度要求的扩展名,不符合规则的文件名会自动返回NULL:

SELECT 
  regexp_extract(filename, '\.([a-zA-Z0-9]{2,4})$', 1) AS file_ext
FROM your_table;

两种方案都会优先取最后一个.右侧的内容作为扩展名,完全适配你提到的.doc/.xls/.xlsx等多后缀场景。

内容的提问来源于stack exchange,提问作者dolores40

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 16:21:03