在sparksql中用正则表达式定位函数

4urapxun  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(473)

我想定位与spark一起使用的sql查询中某个正则表达式匹配的字符的位置。我可以使用定位功能吗?
例如 column_value = SM_12456_ ```
select locate([a-z], 'SM_12456_abc') as lower_case_presence

我期望小写的位置 `a` 作为输出,即。 `10` 但它给我返回0。
xqk2d5yq

xqk2d5yq1#

locate 函数不支持regex。但是,您可以将其与 regexp_extract 功能:

select locate(regexp_extract('SM_12456_abc', '([a-z])', 1),  'SM_12456_abc') as lower_case_presence
``` `regexp_extract('SM_12456_', '([a-z])', 1)` 将返回第一场比赛( `a` 在这种情况下)然后传递给 `locate` 功能。

spark.sql("select locate(regexp_extract('SM_12456_abc', '([a-z])', 1), 'SM_12456_abc') as lower_case_presence").show()

+-------------------+

|lower_case_presence|

+-------------------+

| 10|

+-------------------+

相关问题