Hana SQL+正则表达式

本文详细解释了SQL中的casewhen语句、json_value函数、CAST类型转换、ROUND函数以及HANA中的occurences_regexpr函数和正则表达式的使用,通过实例展示了如何结合这些功能处理JSON数据中的特定条件和类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、Pre 前言

二、知识点拆解

1)case when…then…else

2)json_value 函数

拓展资料

3)CAST 函数

拓展资料

4) ROUND 函数

5)occurences_regexpr 函数

拓展资料

6)正则表达式

拓展资料

三、整合分析

1)先说正则表达式

2)结合hana 函数

3)结合case when

四、废话


一、Pre 前言

hello,来摸鱼了

先贴条代码:

case when occurences_regexpr('([^[:digit:]-.])' in json_value(t2.item_properties,'$.min_score')) = 0
    then round(cast(json_value(t2.item_properties,'$.min_score') as double,1)
else null end as min_score

 item_properties 字段是t2表里的一个起说明作用的字段,值长这样:

{"up_score":"3","min_score":"-7"}

因为没看懂这段代码里的正则表达式,连带着看不懂这条代码要表达什么,正愁没事干,闲庭信步地研究了一上午,终于懂了,什么叫小而美啊,什么叫大道至简啊!

感兴趣的请听我逐层分析~

— —

算了,写到后面感觉,啊!层数好多啊,怎么还没说完,我说到哪一层了来着?

So,我就回来了,咱还是两步走,先说结论,不浪费彼此的生命哈。

这段代码所表达的意思是:

如果 t2.item_properties 里只有数字、负号和小数点 就把这个字段里的min_score值转成一位小数,如果有除此之外的其他字符就给min_score取空值。

还是那句话,大道至简。

好了,要看分析的跟我来。

二、知识点拆解
1)case when…then…else

这是一句sql里常见的分支判断语句,用来做字段条件筛选的

“手谈”一波demo如:

-- 创建数据库 test
create database test;
-- 切换使用数据库 test
use test;

-- 创建表
create table test_tbl(
    id int primary key
    ,gender int
);
-- 插入测试数据
insert into test_tbl values(0,1),(1,1),(2,0);
-- 查验数据
select * from test_tbl;

select
id
,case when gender = 0 then '女'
      else '男'
      end as gender
from test_tbl;

以下为运行结果:

2)json_value函数

JSON

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值