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…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...

云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...