我想定位与spark一起使用的sql查询中某个正则表达式匹配的字符的位置。我可以使用定位功能吗?例如 column_value = SM_12456_ ```select locate([a-z], 'SM_12456_abc') as lower_case_presence
column_value = SM_12456_
我期望小写的位置 `a` 作为输出,即。 `10` 但它给我返回0。
xqk2d5yq1#
locate 函数不支持regex。但是,您可以将其与 regexp_extract 功能:
locate
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()
1条答案
按热度按时间xqk2d5yq1#
locate
函数不支持regex。但是,您可以将其与regexp_extract
功能:spark.sql("select locate(regexp_extract('SM_12456_abc', '([a-z])', 1), 'SM_12456_abc') as lower_case_presence").show()
+-------------------+
|lower_case_presence|
+-------------------+
| 10|
+-------------------+