首页 > 解决方案 > 如何从 Spark-Sql 中的字母数字字符串中获取数字字符

问题描述

spark.sql("select case when length(date)>0  then regexp_extract(date,'\\\\d+', 0) else '' end as date from input").show(false)

上面的 spark 代码给出了数字字符的第一个实例的输出。

样本输入:1234avf456wef 样本输出:1234456

它应该显示字符串中的所有数字字符。提前致谢

标签: mysqldataframeapache-sparkapache-spark-sql

解决方案


您可以尝试以下regexp_replace用于删除所有非数字字符的修改。

下面是一个工作示例,其中还包括从'1234vf456wef &%'

spark.sql("with input as (select '1234vf456wef &%' as date union all select '123' union all select 'a very long 123 string with 456 content.') select date as original,case when length(date)>0  then regexp_replace(date,'[^0-9]', '') else '' end as date from input").show()

输出

+----------------------------------------+-------+
|original                                |date   |
+----------------------------------------+-------+
|1234vf456wef &%                         |1234456|
|123                                     |123    |
|a very long 123 string with 456 content.|123456 |
+----------------------------------------+-------+

让我知道这是否适合您。


推荐阅读