regex\u replace不能像预期的那样工作spark、hive和scala

9rygscc1  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(404)

我有一根绳子 AF1234 我想打印 1234 有时我也只能得到这样的数字 25 以及 23 我也需要这些数字,因此我尝试使用regex\u替换来检查字符串,下面是语法:

select substring(nvl(nullif(regexp_replace(regexp_replace('AF1234','A$',''),'[[:digit:]]',''),''),'XX'),1,2)

这在 Impala 中有效,但在Hive中不起作用

9wbgstp7

9wbgstp71#

在Hive、 Impala 、星火sql中测试

select regexp_extract('AF1234','(\\d+)',1)

结果:

1234
blpfk2vs

blpfk2vs2#

如果你想从字母数字中提取数字,试试这个,

scala> spark.sql("select regexp_replace('AF1234','[A-Z]*','')").show
+------------------------------+
|regexp_replace(AF1234, [A-Z]*, )|
+------------------------------+
|                          1234|
+------------------------------+

spark.sql("select regexp_replace('23','[A-Z]*','')").show
+----------------------------+
|regexp_replace(23, [A-Z]*, )|
+----------------------------+
|                          23|
+----------------------------+

相关问题