Spark SQL中ILIKE关键字报错、LIKE运行正常是什么原因?如何解决?
问题原因
Apache Spark 从3.3.0版本才开始原生支持ILIKE(不区分大小写的LIKE匹配)语法,你当前使用的Spark版本低于3.3.0,SQL解析器无法识别ILIKE关键字,因此抛出语法匹配错误。
解决方案
方案1:升级Spark版本
若运行环境允许,将Spark版本升级到3.3.0及以上,即可直接使用ILIKE语法执行查询:results = spark.sql("select * from df_sql_view where name ILIKE '%i%'")方案2:通过大小写转换函数兼容低版本
若无法升级Spark版本,可以将待匹配字段和匹配内容统一转为大写/小写后,使用普通LIKE实现完全相同的不区分大小写匹配效果:# 统一转为小写匹配 results = spark.sql("select * from df_sql_view where lower(name) LIKE '%i%'") # 也可选择统一转为大写匹配 results = spark.sql("select * from df_sql_view where upper(name) LIKE '%I%'")方案3:使用正则匹配实现
借助Spark支持的rlike正则匹配函数,通过正则标识(?i)开启不区分大小写匹配,也可实现对应效果:results = spark.sql("select * from df_sql_view where name rlike '(?i).*i.*'")
内容的提问来源于stack exchange,提问作者frownino9coder
相关产品推荐
相关产品推荐

