配置单元sql查询中regexp\u replace的奇怪行为

pdsfdshx  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(817)

我有一些输入信息,我正试图删除部分 .0 从id字符串以 .0 . select student_id, regexp_replace(student_id, '.0','') from school_result.credit_records where student_id like '%.0'; 输入:

01-0230984.03
12345098.0
34567.0

预期产量:

01-0230984.03 
12345098
34567

但我得到的结果如下:它删除了任何具有 0 而不是只删除以 .0 ```
0129843
123498
34567

我做错什么了?有人能帮忙吗?
46scxncf

46scxncf1#

regexp中的点有特殊的含义(它表示任何字符)。如果你需要点(.)字面上,它应该被屏蔽使用双斜杠(在Hive)。同时添加线端锚点($):

with mydata as (
select stack(3,
'01-0230984.03',
'12345098.0',
'34567.0'
) as str
)

select regexp_replace(str,'\\.0$','') from mydata;

结果:

01-0230984.03
12345098
34567

正则表达式 '\\.0$' 表示点零( .0 )从字面上说,这条线的尽头( $ ).

相关问题