Hana SQL+正则表达式
目录
一、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')) = 0then 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_VALUE ( expression , path ):用于获取json字符串的值,获取到的值是string类型
json_value(t2.item_properties,'$.min_score')
item_properties 字段是某表里的一个起说明作用的字段,大概值长这样
{"up_score":"3","min_score":"-7"}
这段代码的效果是,获取item_properties这个存储着json字符串的字段里,key为‘min_score’的value值: “-7” (字符串类型!)
拓展资料
JSON_VALUE 详解
JSON 路径表达式 - SQL Server | Microsoft Learn
3)CAST 函数
类型转换函数,语法是:
语法:CAST (expression AS data_type)
还是刚才那个demo,多加一列salary和一列age
ALTER TABLE test_tbl add age VARCHAR(20);
INSERT INTO test_tbl VALUES(3,0,'12',53.23);ALTER TABLE test_tbl add salary DOUBLE;
INSERT INTO test_tbl VALUES(4,0,'13',23.678);

使用CAST把数据转换成INT类型:
这里有个注意点是,在MySQL里string转的时候,需要在int前面加上前缀(signed or unsigned),否则会报错;不过我在Hive里试了下,是不需要前缀的(可能直接隐式转换了)
SELECTid
,gender
,cast(age as SIGNED INT) as age
,salary
FROM test_tbl;

拓展资料
SQL中的cast()函数_cast sql-CSDN博客
4) ROUND函数
ROUND(number, num_digits)
可以修改数值字段的精度,比如
SELECT
round(3.1415) as num
,round(3.1415 ,1) as num1
,round(3.1415 ,2) as num2
,round(3.1415 ,3) as num3
;

5)occurences_regexpr 函数
这个是hana里的函数:用来返回字符串中正则表达式搜索到的匹配次数,返回的是数字,匹配几次就返回几
occurences_regexpr(正则表达式 IN 字符串|存储了字符串的字段)= int
拓展资料
SAP HANA函数汇总(3)——字符串函数_hana 字符串函数-CSDN博客
6)正则表达式
这一块就很大了,今天只说这个案例,其他详见拓展资料
其他全都去掉,只看正则表达式,它长这样:
[^[:digit:]-.]
1、首先,最外层的[ ]中括号
中括号单独出现的时候,它表示匹配括号内列举出的任意字符
2、但是,如果中括号内有一个^ 符号,变成这样 [^ ]
就代表:(取反)没在括号内列举出来的任意字符
3、第三层:[:digit:]
这是一个固定的写法,代表0-9的数字,可以看到也是由中括号[ ]发起的,代表匹配括号内列举出的任意字符,这个任意字符是什么呢,是digit(0-9)
好的。
4、后面两个字符:-.
大道至简,没有特殊的含义,就是本身的意思:负号和小数点
拓展资料
sql-正则表达式 - 知乎 (zhihu.com)
三、整合分析
1)先说正则表达式
[^[:digit:]-.]
结合正则表达式拆解的1-4点,这个正则表达式的意思是
从内层:代表 数字、负号和小数点
读取到外层:除了 数字、负号和小数点 以外的所有字符
所以整体要表示的意思就是:匹配除了 数字、负号和小数点 以外的所有字符
2)结合hana 函数
occurences_regexpr('([^[:digit:]-.])' in json_value(t2.item_properties,'$.min_score')) = 0
取到item_properties列中min_score的所有值,并拿着正则表达式去找,除了 数字、负号和小数点 以外的所有字符 有几个,当没有匹配到,也就是说,min_score的所有值里只有数字、负号和小数点这三种字符
3)结合case when
case when occurences_regexpr('([^[:digit:]-.])' in json_value(t2.item_properties,'$.min_score')) = 0then round(cast(json_value(t2.item_properties,'$.min_score') as double,1)
else null end as min_score
当:min_score的所有值里只有数字、负号和小数点这三种字符时(也就是数值类型的数据)时
就:把这个min_score转换成保留一位小数的double类型
否则:(也就是:非数值类型的数据)就把这个min_score的值为null
四、废话
研究这个玩意研究了将近一上午,写这个笔记又写了将近一下午。
行。
充实的一天。
然后我还是希望自己能成长为一个说人话的大佬,永远怀抱小白思维~
看得开心。
END
相关文章:
Hana SQL+正则表达式
目录 一、Pre 前言 二、知识点拆解 1)case when…then…else 2)json_value 函数 拓展资料 3)CAST 函数 拓展资料 4) ROUND 函数 5)occurences_regexpr 函数 拓展资料 6)正则表达式 拓展资料 三、整合分析…...
【笔记】顺利通过EMC试验(16-41)-视频笔记
目录 视频链接 P1:电子设备中有哪些主要骚扰源 P2:怎样减小DC模块的骚扰 P3:PCB上的辐射源究竟在哪里 P4:怎样控制PCB板的电磁辐射 P5:多层线路板是解决电磁兼容问题的简单方法 P6:怎样处理地线上的裂缝 P7:怎样降低时钟信号的辐射 P8:为什么IO接口的处理特别重要 P9…...
Qlik Sense 调用NPrinting生成On-Demand报表
安装 Qlik Sense On-Demand 报表控件 On-Demand 报表控件添加按钮,该按钮按需生成 Qlik NPrinting 报表。它包括在 Dashboard bundle 中。 当您希望用户能够使用应用程序中的选择作为过滤器在 Qlik Sense 中打印预定义 Qlik NPrinting 报表时,On-Deman…...
ElasticSearch重建/创建/删除索引操作 - 第501篇
历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 E…...
数据写入HBase(scala)
package sourceimport org.apache.hadoop.hbase.{HBaseConfiguration, TableName} import org.apache.hadoop.hbase.client.{ConnectionFactory, Put} import org.apache.hadoop.hbase.util.Bytesobject ffff {def main(args: Array[String]): Unit {//hbase连接配置val conf …...
Codeforces Round 799 (Div. 4)
目录 A. Marathon B. All Distinct C. Where’s the Bishop? D. The Clock E. Binary Deque F. 3SUM G. 2^Sort H. Gambling A. Marathon 直接模拟 void solve() {int ans0;for(int i1;i<4;i) {cin>>a[i];if(i>1&&a[i]>a[1]) ans;}cout<&l…...
为什么要用云手机养tiktok账号
在拓展海外电商市场的过程中,许多用户选择采用tiktok短视频平台引流的策略,以提升在电商平台上的流量,吸引更多消费者。而要进行tiktok引流,养号是必不可少的一个环节。tiktok云手机成为实现国内跨境养号的一种有效方式࿰…...
vue pc端网页实现自适应
一、基本原理 pc端做自适应可以用rem来实现,啥是rem,自己百度 二、新建rem.ts文件 // rem等比适配配置文件 // 基准大小 const baseSize 14 // 设置 rem 函数 function setRem () {// 当前页面宽度相对于 1920宽的缩放比例,可根据自己需要…...
Android 13以上版本读写SD卡权限适配
如题,最近工作上处理的问题,把解决方案简单逻列出来,供有需要的朋友参考之 解决方案: 1、配置权限 <uses-permission android:name"android.permission.READ_MEDIA_IMAGES" /><uses-permission android:name&q…...
并查集模板:食物链详解
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main {static int N 50010;static int n,m; //n个动物,m局判断static int[] p new int[N]; //p[i]是i的根节点static int[] d new int[N]; //d[i]表示i到…...
使用WAF防御网络上的隐蔽威胁之反序列化攻击
什么是反序列化 反序列化是将数据结构或对象状态从某种格式转换回对象的过程。这种格式通常是二进制流或者字符串(如JSON、XML),它是对象序列化(即对象转换为可存储或可传输格式)的逆过程。 反序列化的安全风险 反…...
05. 交换机的基本配置
文章目录 一. 初识交换机1.1. 交换机的概述1.2. Ethernet_ll格式1.3. MAC分类1.4. 冲突域1.5. 广播域1.6. 交换机的原理1.7. 交换机的3种转发行为 二. 初识ARP2.1. ARP概述2.2. ARP报文格式2.3. ARP的分类2.4. 免费ARP的作用 三. 实验专题3.1. 实验1:交换机的基本原…...
yolo将标签数据打到原图上形成目标框
第一章 目标:为了查看自己在标注标签时是否准确,写了这段代码来将标注的框打到原图上 第二章 步骤:进行反归一化得到坐标画出矩形框 第二行是目标图片对应的txt,第三行是目标图片 第三章 全部代码如下: import cv2 import …...
002-00-02【大红ai源码】dolphinscheduler3.2.0 源码环境搭建------by孤山村头王大爷家女儿大红
【ai阅读源码-dolphinscheduler】 DolphinScheduler 开发手册1、软件要求2、克隆代码库3、编译打包4、代码风格5、新建数据库,导入元数据。6, 启动后端6.1 启动api-server 6.2 启动master-server6.3 启动worker-server 7 启动前端 DolphinScheduler 开发…...
python-自动化篇-运维-监控-如何使⽤Python处理和解析⽇志⽂件?-实操记录
文章目录 1. 选择日志文件格式: 确定要处理的日志文件的格式。不同的日志文件可能具有不同的格式,如文本日志、CSV、JSON、XML等。了解日志文件的格式对解析⾮常重要。2. 打开日志文件: 使⽤Python的文件操作功能打开日志文件,以便…...
代码随想录算法训练营DAY6 | 哈希表(1)
DAY5休息一天,今天重启~ 哈希表理论基础:代码随想录 Java hash实现 :java 哈希表-CSDN博客 一、LeetCode 242 有效的字母异位词 题目链接:242.有效的字母异位词 思路:设置字典 class Solution {public boolean isAnag…...
【嵌入式学习】C++QT-Day3-C++基础
笔记 见我的博客:https://lingjun.life/wiki/EmbeddedNote/19Cpp 作业 设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函…...
表贴式PMSM的直接转矩控制(DTC)MATLAB仿真模型
微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 表贴式PMSM的直接转矩控制(DTC),直接使用滞环控制对转矩和磁链进行控制,相对于传统的FOC控制而言,其不需要进行解耦变换,在此次的有以下几点需要注意:…...
详解OpenHarmony各部分文件在XR806上的编译顺序
大家好,今天我们来谈一谈编程时一个很有趣的话题——编译顺序。我知道,一提到编译可能大家会感到有点儿头疼,但请放心,我不会让大家头疼的。我们要明白,在开始写代码之前,了解整个程序的编译路径是十分有必…...
【美团】无人机-大数据开发工程师
更新时间:2024/01/29 工作地点:北京市 事业群:到家事业群 工作经验:3年 部门介绍 为了更好地提升城市即时配送的效率与体验,美团于2017年启动了无人机配送服务的探索,通过科技创新推动履约工具变革&#x…...
颗粒结构:基础但容易被忽视
在COMSOL中二氧化碳电化学还原过程中不同催化剂结构对离子传输的影响的模拟分析搞电化学的小伙伴们都知道,催化剂长得像撒了把芝麻似的颗粒结构最省事。但在COMSOL里建模时千万别直接右键画球体——试试这个骚操作:model.geom("geom1").featur…...
钕铁硼磁铁性能参数详解:选型、使用与注意事项
在实际选型过程中,钕铁硼磁铁的参数表常常让人困惑:N35和N42有什么区别?SH、UH、EH后缀代表什么?剩磁、矫顽力这些参数怎么看?本文将系统梳理钕铁硼磁铁的核心性能参数,帮助读者快速掌握选型要点。一、先搞…...
Python金融数据工程:构建高可靠股票数据管道的3种架构方案
Python金融数据工程:构建高可靠股票数据管道的3种架构方案 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资和金融数据分析领域,获取稳定、实时的股票数据是每个技…...
Lychee Rerank MM零基础上手:图文混合Query构建与Document批量上传实操
Lychee Rerank MM零基础上手:图文混合Query构建与Document批量上传实操 1. 什么是Lychee Rerank MM?——多模态重排序的“精准标尺” 你有没有遇到过这样的问题:在图片库中搜索“穿红裙子站在樱花树下的女孩”,返回结果里却混着…...
使用ComfyUI可视化工作流构建NLP-StructBERT语义搜索应用
使用ComfyUI可视化工作流构建NLP-StructBERT语义搜索应用 你是不是觉得,要搭建一个能理解你说话、能精准搜索内容的AI应用,得写一堆复杂的代码,还得懂各种框架?其实,现在有更简单的方法了。今天,我就带你用…...
微信小程序消息推送配置避坑指南:为什么你的Token校验总是失败?
微信小程序消息推送配置避坑指南:为什么你的Token校验总是失败? 第一次配置微信小程序消息推送功能时,开发者往往会遇到一个令人头疼的问题——Token校验失败。这个看似简单的验证环节,却隐藏着不少技术细节。本文将带你深入理解校…...
VS Code远程开发必备:3分钟搞定SSH免密登录(附常见失败排查)
VS Code远程开发极简指南:SSH免密登录全流程与深度排错 每次连接远程服务器都要输入密码?VS Code的Remote-SSH插件虽然强大,但默认配置下的频繁密码验证确实影响开发效率。本文将带你用3分钟完成密钥对配置,彻底告别密码输入&…...
GHelper:华硕笔记本性能调校神器,让你的ROG设备焕发新生
GHelper:华硕笔记本性能调校神器,让你的ROG设备焕发新生 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other mod…...
突破硬件枷锁:OptiScaler开源解决方案让所有设备都能享受AI超分辨率技术
突破硬件枷锁:OptiScaler开源解决方案让所有设备都能享受AI超分辨率技术 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler …...
Qwen2.5-7B+Tools应用场景解析:智能客服、信息查询等实战案例
Qwen2.5-7BTools应用场景解析:智能客服、信息查询等实战案例 1. 引言:当大语言模型遇上工具 想象一下,你正在运营一家电商平台,每天要处理上千条客户咨询。人工客服团队疲于应对,而客户等待时间越来越长。这时&#…...
