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

如何在PySpark SQL中使用ILIKE实现查询语句转换

PySpark SQL 中ILIKE的等效实现方案

版本适配规则

  • Spark 3.3.0及以上版本:原生内置支持ILIKE语法,和通用SQL的大小写不敏感模糊匹配逻辑完全一致,原查询语句可直接运行
  • Spark 3.3.0以下版本:无原生ILIKE支持,可通过「大小写统一转换+LIKE」或正则匹配两种方式实现等效效果

可直接执行的代码示例

高版本(Spark 3.3.0+)直接兼容写法

原语句仅需去掉ILIKE后多余的括号即可直接执行,逻辑和原SQL完全一致:

select * from 
`table`
where (primary_product NOT IN ('No Technical Enforcement')
   or group_name ilike '%stove%')

注:table是SQL保留关键字,如果你的表名确实为table,必须用反引号包裹,否则会抛出语法错误。

全版本兼容写法(性能最优)

通过lower()函数将匹配字段统一转为小写,匹配关键词也使用全小写,即可实现和ILIKE完全一致的大小写不敏感匹配效果,该写法在所有Spark版本中都可运行,且性能优于正则匹配:

select * from 
`table`
where (primary_product NOT IN ('No Technical Enforcement')
   or lower(group_name) like '%stove%')

如果习惯用大写转换,替换为upper(group_name) like '%STOVE%'效果完全相同。

正则匹配写法

如果需要更灵活的匹配规则,也可以使用RLIKE(Spark SQL中的正则匹配关键字)搭配大小写不敏感正则标记实现:

select * from 
`table`
where (primary_product NOT IN ('No Technical Enforcement')
   or group_name rlike '(?i).*stove.*')

其中(?i)是正则语法中的大小写不敏感开关,前后的.*对应LIKE语法中的前后任意字符通配符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:06:25