实用SQL小总结

news2024/12/28 17:44:58

WHERE 条件 column 为纯英文字符 或 不包含任何字符

语法:

SELECT * FROM your_table WHERE REGEXP(your_column,'^[A-Za-z]+$');
SELECT * FROM your_table WHERE NOT REGEXP(your_column,'^[A-Za-z]+$');

例:

SELECT DISTINCT t.pldlibho FROM kibb_pldlyw t WHERE REGEXP_LIKE(t.pldlibho, '[a-zA-Z]+$');
-- 不包含任何英文字符
SELECT DISTINCT t.pldlibho FROM kibb_pldlyw t WHERE NOT REGEXP_LIKE(t.pldlibho, '[a-zA-Z]+$');

WHERE 条件 column 为纯数字 或 不包含任何数字

语法:

SELECT * FROM your_table WHERE REGEXP(your_column,'^[0-9]+$');
SELECT * FROM your_table WHERE NOT REGEXP(your_column,'^[0-9]+$');

例:

SELECT DISTINCT t.pldlibho FROM kibb_pldlyw t WHERE REGEXP_LIKE(t.pldlibho, '^[0-9]+$');
--不包含任何数字
SELECT DISTINCT t.pldlibho FROM kibb_pldlyw t WHERE NOT REGEXP_LIKE(t.pldlibho, '^[0-9]+$');

PARTITION BY 的简单使用

部分内容转载至:
https://blog.csdn.net/weixin_44711823/article/details/135966741?fromshare=blogdetail&sharetype=blogdetail&sharerId=135966741&sharerefer=PC&sharesource=FuTian0715&sharefrom=from_link

更详细的讲解请点击链接查看。

说明:

partition by窗口函数 和 group by分组的区别:
partition by关键字是分析性函数的一部分,它和聚合函数(如group by)不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录。
partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。
partition by与group by不同之处在于前者返回的是分组里的每一条数据,并且可以对分组数据进行排序操作。后者只能返回聚合之后的组的数据统计值的记录。
partition by相比较于group by,能够在保留全部数据的基础上,只对其中某些字段做分组排序(类似excel中的操作),而group by则只保留参与分组的字段和聚合函数的结果; 简单来说窗口函数对部分数据进行排序、计算等操作,group by对一组值进行聚合,即窗口函数是每一行都会保留,group by是从多行浓缩为少数行。

语法:

<窗口函数> over ( partition by<用于分组的列名> order by <用于排序的列名>)

窗口函数:

专用窗口函数: rank(), dense_rank(), row_number()
聚合函数 : sum(), max(), min(), count(), avg() 等

例:

SELECT m.qyuezhao,
       CASE m.dxnqyzht
         WHEN '3' THEN
          '欠费'
         WHEN '4' THEN
          '暂停'
       END
  FROM (SELECT Row_number() over(PARTITION BY t.dxnqyzht ORDER BY t.qyuezhao) rn,
               t.qyuezhao,
               t.dxnqyzht
          FROM kibb_dxinqy t
         WHERE t.dxnqyzht IN ('3', '4')) m
 WHERE rn <= 10;
SELECT *,rank() over(partition by type order by price desc) as  mm from commodity;
SELECT *,row_number() over(partition by type order by price desc) as  mm from commodity;
SELECT *,dense_rank() over(partition by type order by price desc) as  mm from commodity;

在这里插入图片描述
从以上结果来看:
rank()函数:如果存在并列名次的行,会占用下一个名次的位置,比如苹果的组内排名 1,2,3,4, 但是由于有两个是并列的,所以显示的排名是 1,1,3,4 ,其中 2 的位置还是被占用了
row_number()函数:不考虑并列的情况,此函数即使遇到了price 相同的情况,还是会默认排出一个先后来
dense_rank()函数:如果存在并列名次的行,不会占用下一个名次的位置,例如图片的最后显示的是 1,1,2,3


json格式字符串处理相关函数

IS JSON

判断某个字段是否为有效json

select * from kapb_jioybw bw where bw.quanjuls = 'GFTS002021051100001685916' and bw.jiaoyirq = '20210511';

在这里插入图片描述
在这里插入图片描述

JSON_VALUE

JSON_VALUE只支持scalar value,即只返回一行一列,通常用在select语句或where条件中。
JSON_VALUE接受两个参数,即JSON文档(document)和到指定属性的路径(path),返回值可以格式化。
JSON_VALUE支持错误处理,例如当指定的path不正确(如路径不存在,大小写不匹配),返回多个值(非scalar)时。错误处理方式有3种,默认为返回空值(NULL ON ERROR),其它为返回指定默认值(DEFAULT on ERROR),报错(ERROR ON ERROR)。

NULL演示

-- 错误示例1:Address返回多个属性,不是scalar. Address改为Address.city就正确了。
select JSON_VALUE(xnybwvar ,'$.ShippingInstructions.Address')
 from kapb_jioybw p
 where JSON_VALUE(xnybwvar ,'$.PONumber' returning NUMBER(10)) = 1
 and p.quanjuls = 'GFTS002021051100001685917' and p.jiaoyirq = '20210511';

在这里插入图片描述

-- 错误示例2:大小写错误,Name应为name
select JSON_VALUE(xnybwvar ,'$.ShippingInstructions.Name')
 from kapb_jioybw p
 where JSON_VALUE(xnybwvar ,'$.PONumber' returning NUMBER(10)) = 450
 and p.quanjuls = 'GFTS002021051100001685917' and p.jiaoyirq = '20210511';

在这里插入图片描述

-- DEFAULT on ERROR演示

在这里插入图片描述

-- ERROR ON ERROR演示

在这里插入图片描述

-- 以上所的错误处理只针对运行时错误,例如以下Address前的.写成了,号,则不在以上所说错误处理的范畴:

在这里插入图片描述

JSON_QUERY

JSON_QUERY是JSON_VALUE的补充,参数个数与类型与其一样,但可返回一个对象或array。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输出中省去了很多空格,但为了美观,你也可以加PRETTY关键字以添加缩进和对齐:
在这里插入图片描述
下例为使用array index以返回array中的一个对象:
在这里插入图片描述
注意JSON_QUERY只能返回对象,如果path指定是一个scalar值,则默认返回空值,例如:
在这里插入图片描述
JSON_QUERY的错误处理有三种,默认为NULL ON ERROR, ERROR ON ERROR与JSON_VALUE类似,EMPTY ON ERROR返回空的array。
最常见的错误是返回值不是object或array,而是scalar值。
不过还有一种特殊方式,可将scalar转换为array:
在这里插入图片描述
利用WITH ARRAY WRAPPER将结果强制转换为array
在这里插入图片描述

JSON_TABLE

第一个查询显示了如何从文档中最多发生一次的值投射一组列。值可能来自任何级别的嵌套,只要它们不来自组的键,或来自阵列的后裔,除非使用索引来识别数组中的一个项目。

select M.*
 from kapb_jioybw p,
      JSON_TABLE(p.xnybwvar,
                 '$' columns PO_NUMBER NUMBER(10) path '$.PONumber',
                 REFERENCE VARCHAR2(30 CHAR) path '$.Reference',
                 REQUESTOR VARCHAR2(32 CHAR) path '$.Requestor',
                 USERID VARCHAR2(10 CHAR) path '$.User',
                 COSTCENTER VARCHAR2(16 CHAR) path '$.CostCenter',
                 TELEPHONE VARCHAR2(16 CHAR) path
                 '$.ShippingInstructions.Phone[0].number') M
 where p.quanjuls = 'GFTS002021051100001685917'
  and p.jiaoyirq = '20210511'
  and PO_NUMBER between 1 and 2;

在这里插入图片描述
如果输出的列仍是对象或array,则可使用嵌套(NESTED PATH):

select M.*
 from kapb_jioybw p,
      JSON_TABLE(p.xnybwvar,
                 '$' columns(PO_NUMBER NUMBER(10) path '$.PONumber',
                         REFERENCE VARCHAR2(30 CHAR) path '$.Reference',
                         REQUESTOR VARCHAR2(32 CHAR) path '$.Requestor',
                         USERID VARCHAR2(10 CHAR) path '$.User',
                         COSTCENTER VARCHAR2(16) path '$.CostCenter',
                         NESTED PATH '$.LineItems[*]'
                         columns(ITEMNO NUMBER(16) path '$.ItemNumber',
                                 DESCRIPTION VARCHAR2(32 CHAR) path
                                 '$.Part.Description',
                                 UPCCODE VARCHAR2(14 CHAR) path
                                 '$.Part.UPCCode',
                                 QUANTITY NUMBER(5, 4) path '$.Quantity',
                                 UNITPRICE NUMBER(5, 2) path
                                 '$.Part.UnitPrice'))) M
 where p.quanjuls = 'GFTS002021051100001685917'
  and p.jiaoyirq = '20210511'
  and PO_NUMBER between 1 and 2;

在这里插入图片描述
JSON_TABLE常用于建立关系型视图,然后可以用标准的SQL语句操作。

create or replace view json_test_view
as
select M.*
 from kapb_jioybw p,
      JSON_TABLE(p.xnybwvar,
                 '$' columns(PO_NUMBER NUMBER(10) path '$.PONumber',
                         REFERENCE VARCHAR2(30 CHAR) path '$.Reference',
                         REQUESTOR VARCHAR2(32 CHAR) path '$.Requestor',
                         USERID VARCHAR2(10 CHAR) path '$.User',
                         COSTCENTER VARCHAR2(16) path '$.CostCenter',
                         NESTED PATH '$.LineItems[*]'
                         columns(ITEMNO NUMBER(16) path '$.ItemNumber',
                                 DESCRIPTION VARCHAR2(32 CHAR) path
                                 '$.Part.Description',
                                 UPCCODE VARCHAR2(14 CHAR) path
                                 '$.Part.UPCCode',
                                 QUANTITY NUMBER(5, 4) path '$.Quantity',
                                 UNITPRICE NUMBER(5, 2) path
                                 '$.Part.UnitPrice'))) M
 where p.quanjuls = 'GFTS002021051100001685917'
  and p.jiaoyirq = '20210511'
  and PO_NUMBER between 1 and 2;

定义完这些视图后,开发者就可以完全利用SQL的能力了。
在这里插入图片描述

JSON_EXISTS

用在where语句中,和EXISITS类似,测试JSON document中是否存在指定的path。

select count(*)
 from kapb_jioybw p
 where JSON_EXISTS(p.xnybwvar, '$.ShippingInstructions.Address.state')
  and p.quanjuls = 'GFTS002021051100001685917'
  and p.jiaoyirq = '20210511'

在这里插入图片描述
JSON_EXISTS可以区分key不存在或key存在,value不存在或为空的情形,试比较以下输出:

select JSON_VALUE(p.xnybwvar, '$.ShippingInstructions.Address.county'),
      count(*)
 from kapb_jioybw p
 where p.quanjuls = 'GFTS002021051100001685917'
  and p.jiaoyirq = '20210511'
 group by JSON_VALUE(p.xnybwvar, '$.ShippingInstructions.Address.county');

在这里插入图片描述

select JSON_VALUE(p.xnybwvar, '$.ShippingInstructions.Address.county'),
      count(*)
 from kapb_jioybw p
 where p.quanjuls = 'GFTS002021051100001685917'
  and p.jiaoyirq = '20210511'
  and JSON_EXISTS(p.xnybwvar, '$.ShippingInstructions.Address.county')
 group by JSON_VALUE(p.xnybwvar, '$.ShippingInstructions.Address.county');

在这里插入图片描述
JSON_EXISTS还支持predicate,就是可以带条件。

select p.xnybwvar
 from kapb_jioybw p
 where JSON_EXISTS(p.xnybwvar,
                  '$?(@.PONumber == $PO_NUMBER)' passing 1 as "PO_NUMBER")
  and p.quanjuls = 'GFTS002021051100001685917'
  and p.jiaoyirq = '20210511';

在这里插入图片描述

SELECT COUNT(1)
  FROM kapb_jioybw p
 WHERE JSON_EXISTS(p.xnybwvar,
                   '$?(@.PONumber == $PO_NUMBER)' passing 1 AS "PO_NUMBER")
   AND p.quanjuls = 'GFTS002021051100001685917'
   AND p.jiaoyirq = '20210511';

JSON索引

使用JSON_VALUE创建的唯一索引,基于的值必须是scalar,而且必须唯一。可以是B-Tree索引或Bitmap索引。

create unique index PO_NUMBER_IDX
   on kapb_jioybw p (
         JSON_VALUE(
            p.xnybwvar,'$.PONumber' returning NUMBER(10) ERROR ON ERROR NULL ON EMPTY
         )
      )

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2177968.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gRPC基础讲解

一、gRPC原理 1、什么是RPC RPC 即远程过程调用协议&#xff08;Remote Procedure Call Protocol&#xff09;&#xff0c;可以让我们像调用本地函数一样发起远程调用。RPC 凭借其强大的治理功能&#xff0c;成为解决分布式系统通信问题的一大利器。 gRPC是一个现代的、高性能…

电路学习——反激电源(2024.09.29)

参考链接1: XXX 在此感谢各位前辈大佬的总结&#xff0c;写这个只是为了记录学习大佬资料的过程&#xff0c;内容基本都是搬运的大佬博客&#xff0c;觉着有用自己搞过来自己记一下&#xff0c;如果有大佬觉着我搬过来不好&#xff0c;联系我删。 电路学习——反激电源&#xf…

基于大数据的高校新生数据可视化分析系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

生信科研,教授(优青)团队一站式指导:高通量测序技术--农业植物基因组分析、组蛋白甲基化修饰、DNA亲和纯化测序、赖氨酸甲基化

组蛋白甲基化修饰工具(H3K4me3 ChIP-seq) 组蛋白甲基化类型也有很多种&#xff0c;包括赖氨酸甲基化位点H3K4、H3K9、H3K27、H3K36、H3K79和H4K20等。组蛋白H3第4位赖氨酸的甲基化修饰(H3K4)在进化上高度保守&#xff0c;是被研究最多的组蛋白修饰之一。 DNA亲和纯化测序 DNA亲…

QT设计中文输入法软键盘DLL给到C#开发步骤

开发目的&#xff1a;本文提供解决触摸屏C#程序中无法输入中文问题&#xff0c;中文拼音采用开源的谷歌输入法程序、使用QT编译中文输入法界面和中文输入法接口给到C#使用。 开发步骤&#xff1a; 1、QT中设计字母和字符输入界面 2、QT中设计数字输入界面 3、QT中封装调用谷歌…

神秘“蓝莓“模型横空出世:AI文生图界的新霸主还是营销噱头?

Ai 智能办公利器 - Ai-321.com AI文生图领域近日风起云涌&#xff0c;“蓝莓”模型横空出世&#xff0c;迅速占领行业制高点&#xff0c;成为万众瞩目的焦点。这个神秘而强大的模型&#xff0c;在众多AI竞技高手中脱颖而出&#xff0c;一举超越了OpenAI的“草莓”、Flux.1等强…

基于springboot+小程序的儿童预防接种预约管理系统(疫苗1)(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本儿童预防接种预约微信小程序可以实现管理员和用户。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;儿童信息管理&#xff0c;疫苗信息管理&#xff0c;儿童接种管理&#x…

C++中的多态(详细讲解)

目录 一、多态的概念 1、多态的概念 二、多态的定义以及实现 1、多态的构成条件 2、虚函数 3、虚函数的重写 1&#xff09; 虚函数重写的理解 2&#xff09;虚函数重写的两个例外 1. 协变(基类与派生类虚函数返回值类型不同) 2. 析构函数的重写(基类与派生类析构函数的…

个人获取Wiley 、ScienceDirect、SpringerLink三个数据库文献的方法

在同学们的求助文献中经常出现Wiley 、ScienceDirect、SpringerLink这三个数据库文献。本文下面就讲解一下个人如何不用求助他人自己搞定这三个数据库文献下载的方法。 个人下载文献首先要先获取数据库资源&#xff0c;小编平时下载文献是通过科研工具——文献党下载器获取的数…

情感短视频素材上哪里找?推荐几个热门情感视频素材资源网站

抖音上热门的情感短视频都是怎么做的&#xff1f;情感视频素材都在哪里可以下载呢&#xff1f;作为一名资深的视频剪辑师&#xff0c;今天就跟大家聊聊那些可以下载情感素材高清无水印的网站&#xff0c;如果你也在苦苦找寻情感素材&#xff0c;快来看看吧&#xff5e; 1. 稻虎…

AI预测福彩3D采取888=3策略+和值012路或胆码测试9月28日新模型预测第101弹

经过100多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;100多期一共只错了12次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xf…

黑神话热潮,能引发GPU狂欢的才是杀手级应用

黑神话与GPU技术的共舞&#xff1a;游戏推动硬件创新的新时代 ©作者|Steven 来源|神州问学 黑神话掀起游戏风暴 《黑神话&#xff1a;悟空》自上线以来&#xff0c;可谓是在游戏界掀起了一场前所未有的风暴。上线后就蝉联 Steam 热销榜首&#xff0c;晚间同时在线人数超…

打造自己的解析大模型:模型的安装与推理

RAG系统中要快速构建AI助理&#xff0c;首先要高效、准确地建立知识库&#xff0c;而实现这一点的关键便是具备一个功能强大的文档解析器。在上一篇中&#xff0c;我们介绍了PdfParser&#xff0c;本篇将深入讨论该解析器所依赖的模型&#xff0c;以及如何在Windows环境中安装并…

深度学习新手必备:Easy-PyTorch 助你轻松入门 PyTorch

深度学习初学者必备工具&#xff0c;简化代码编写&#xff0c;提升学习效率&#xff01; 对于刚入门深度学习的小伙伴&#xff0c;PyTorch 是一个强大的工具&#xff0c;但同时也伴随着大量复杂的代码和不小的学习曲线。你是否曾因为不知道如何快速实现模型而感到困惑&#xff…

4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1

目录 前序工作 1. 服务器项目名和本地一致 2. pycharm连接服务器 3. 本地项目对应到服务器项目 4. 简单测试一下同步效果 同步成功 前序工作 在同步到服务器之前&#xff0c;得确保已经完成以下几个前置步骤&#xff1a; 1. 租一个云服务器&#xff0c;可参考&#xff1a…

如何在云端地球建模云平台利用无人机航拍照片进行三维建模?

第一步&#xff1a;导入照片 进入云端地球工作台&#xff0c;选择【场景建模】将航拍的照片组导入。 输入模型名称&#xff08;若无则无法上传&#xff09;&#xff0c;点击【上传】&#xff0c;将照片上传到云端服务器。 第二步&#xff1a;创建任务 上传成功后点击开始处理…

Qt Creator安卓环境配置【筑基篇】

1.前言 由于我的Qt Creator目前就先的14版本IDE老是存在各种莫名奇妙的bug&#xff0c;我都已经成为官方Qt Forum官方论坛的常客了。有一说一新版本的各种设置不小心误触是真的坑死人。不说了给我小主机配置安卓环境了。小主机系统版本window11-23H,Qt-Creator版本是13.01版本…

Java-数据结构-Map和Set-(二)-哈希表 |ू・ω・` )

文本目录&#xff1a; ❄️一、哈希表&#xff1a; ☑ 1、概念&#xff1a; ☑ 2、冲突-概念&#xff1a; ☑ 3、冲突-避免&#xff1a; ☞ 1&#xff09;、避免冲突-哈希函数的设计&#xff1a; ☞ 2&#xff09;、避免冲突-负载因子调节(重点)&#xff1a; ☑ 4、冲突-解决&…

太绝了死磕这本大模型神书!

今天给大家推荐一本大模型神书&#xff0c;就是这本&#xff1a;《大语言模型&#xff1a;基础与前沿》 书籍介绍&#xff1a; 本书深入阐述了大语言模型的基本概念和算法、研究前沿以及应用&#xff0c;涵盖大语言模型的广泛主题&#xff0c;从基础到前沿&#xff0c;从方法…

Colorful/七彩虹将星X15 AT 23 12代 4060显卡 Win11原厂OEM系统 带COLORFUL一键还原

安装完毕自带原厂驱动和预装软件以及一键恢复功能&#xff0c;自动重建COLORFUL RECOVERY功能&#xff0c;恢复到新机开箱状态。 【格式】&#xff1a;iso 【系统类型】&#xff1a;Windows11 原厂系统下载网址&#xff1a;http://www.bioxt.cn 注意&#xff1a;安装系统会…