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

Spark如何筛选日期列包含Z外字母字符的异常行?

解决Spark SQL筛选日期字段混入文本的问题

问题原因

你原来用的LIKE '%[a-zA-Y]%'无法生效,是因为Spark SQL的LIKE仅支持%(任意长度字符)和_(单个字符)两种通配符,不支持正则表达式的字符类语法。要实现正则匹配,得用RLIKE或REGEXP操作符。

两种解决方案

方案1:筛选包含非法字符的行

正常日期格式里仅允许出现T、Z(如果字段存在小写t/z,需补充进规则),我们可以匹配包含这两个字符之外的字母或其他非法字符的行:

SELECT * 
FROM db.table
-- 匹配非数字、非减号、非冒号、非T/Z的字符
WHERE date RLIKE '[^0-9\\-:TZ]'
-- 若需兼容小写t/z,替换为以下正则
-- WHERE date RLIKE '[^0-9\\-:TtZz]'

方案2:筛选不符合标准格式的行

更严谨的方式是直接匹配标准日期格式,筛选不匹配的行。标准格式2023-02-04T07:01:02Z对应的正则如下:

SELECT * 
FROM db.table
WHERE date NOT RLIKE '^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$'

这种方法不仅能筛选混入文本的行,还能找出日期逻辑无效的行(比如月份为13、日期为32等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:17:22