百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

【正则表达式学习笔记】构造复杂SQL语句的正则表达式1

xsobi 2025-01-06 16:07 1 浏览

以前做人口数据库时经常写些比较长的SQL语句,最长至上百行,看懂也得半天,恰巧在项目中遇见需要提取其中的条件子句,那时对正则也研究了一下,所以就顺便用正则写了个SQL语句分析、校验工具。正则表达式一般用在验证模式中,但个人认为验证只是正则的功能之一,在文本数据处理中才能发挥它的真正作用。利用正则表达式校验分析SQL语句,对于日常开发中,可能有简单问题复杂化之嫌,但这属于一个学习SQL和正则的绝佳机会。

【问题】先提出一个很简单的问题:如何提取Select语句中的使用的表和字段,以及过滤条件?


select count(distinct pis_p_renk_1.sysid) as result,
pis_p_renk.juzhd as address,
pis_p_guanlshx.guanlshx as guanlshx,
pis_p_renk.hukxzh as hukxzh
from pis_p_renk,
pis_p_guanlshx,
pis_p_zhuxyy,
pis_p_zinshx,
pis_p_guanx,
pis_p_renk as pis_p_renk_1
where pis_p_renk.sysid = pis_p_guanlshx.renkid
and pis_p_renk.sysid = pis_p_zhuxyy.renkid
and pis_p_renk_1.sysid = pis_p_guanx.renkid
and pis_p_renk.sysid = pis_p_guanx.guanxrid
and pis_p_guanx.sysid = pis_p_zinshx.guanxid
and pis_p_guanx.guanxlx = '2'


and pis_p_renk_1.xingb = '2'


and substr(pis_p_renk.chushrq, 1, 6) between substr('@StartTime', 1, 6) and
substr('@EndTime', 1, 6)
and pis_p_guanlshx.dangq = '1'


and (pis_p_guanlshx.guanlshxbdshj = '' or
pis_p_guanlshx.guanlshxbdshj is null or
pis_p_guanlshx.guanlshxbdshj is null or
substr(pis_p_guanlshx.guanlshxbdshj, 1, 6) <=
substr(pis_p_renk.chushrq, 1, 6))
and pis_p_renk.juzhd like '@Address%'


and pis_p_zinshx.zinshx not in ('3', '4', '8')
and pis_p_renk.zhengcnw = '5'


and pis_p_renk.xingb = '2'


(一)以下是概括分析思路:

Select语句中各组成部分进行粗粒度、细粒度划分,然后将细粒度部分匹配正则表达式,再将细粒度合成粗粒度部分,最后组成完整正则表达式,可以校验语句,在正则捕获中可以获取各组成部分。

SQL正则构建工具:用于粗粒度、细粒度正则匹配。


SQL语句分析工具:分析SQL语句各组成部分。



(二)语句构造粗粒度分析(待续)

(三)细粒度正则匹配


(四)完整正则表达式搭建

(五)SQL正则分析过程

相关推荐

全网最详细解决Windows下Mysql数据库安装后忘记初始root 密码方法

一、准备重置root的初始化密码Win+R键启动命令输入窗口;输入cmd打开命令执行窗口;##界面如下##输入命令:netstopmysqld#此操作会停止当前运行的...

Spring Boot数据库密码加密的配置方法

前言由于系统安全的考虑,配置文件中不能出现明文密码的问题,本文就给大家详细介绍下springboot配置数据库密码加密的方法,下面话不多说了,来一起看看详细的介绍吧...

Mysql 8.4数据库安装、新建用户和数据库、表单

1、下载MySQL数据库yuminstall-ywgetperlnet-toolslibtirpc#安装wget和perl、net-tools、libtirpcwgethtt...

mysql5.7安装教程

首先下载mysql的rpm包wgethttps://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-community-client...

MySQL管理授权和数据库的备份和还原详解

一般管理用户和授权由DBA去执行,DBA为数据库管理员一、管理用户1.添加用户...

数据库迁移有什么技巧?|分享强大的database迁移和同步工具

概述DBConvertStudio是一款强大的跨数据库迁移和同步软件,可在不同数据库格式之间转换数据库结构和数据。它将成熟、稳定、久经考验的DBConvert和DBSync核心与改进的现代...

Mysql解压版安装过程

Mysql是目前软件开发中使用最多的关系型数据库,具体安装步骤如下:第一步:Mysql官网下载最新版(mysql解压版(mysql-5.7.17-winx64)),Mysql官方下载地址为:https...

MySQL5.7升级到8.0过程详解

前言:不知不觉,MySQL8.0已经有好多个GA小版本了。目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了。本篇文章主要介绍从5....

10种常见的MySQL错误,你可中招?

【51CTO.com快译】如果未能对MySQL8进行恰当的配置,您非但可能遇到无法顺利访问、或调用MySQL的窘境,而且还可能给真实的应用生产环境带来巨大的影响。本文列举了十种MySQL...

忘记MySQL密码怎么办?一招教你搞定

在安装完MySQL或者是在使用MySQL时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错。那如果我们不小心忘记了MySQL的密码,该如何处理呢?别着急...

Windows 安装解压版本的 MySql

1、下载解压版本的MySql到https://downloads.mysql.com/archives/community/网站,根据自己需要安装的版本进行选择下载,这里下载不要选择MSII...

爆破SSH/MySQL账户竟如此简单

友情提示:初入安全,小白一个,本文重在学习与经验分享!背景使用Kali自带的MSF工具对SSH的账号密码进行爆破。1.实验环境本次实验通过MSF,可直接对SSH的账号密码进行爆破。KaliIP:1...

Mysql8忘记密码/重置密码

Mysql8忘记密码/重置密码UBUNTU下Mysql8忘记密码/重置密码步骤如下:先说下大概步骤:修改配置文件,使得用空密码可以进入mysql。然后置当前root用户为空密码。再次修改配置文件,不能...

wamp查看MySQL密码 MySQL console输入密码闪退 重置mysql密码

wampserver的MySQL数据库用户名为root初始密码为空,但是部分同学通过MySQLconsole访问数据库输入密码的时候出现窗口闪退,常见的问题是原来有改过密码或者你的配置文件要求密码不...

Mysql数据库操作指引(六)——账号密码及权限管理

简介:在MySQL数据库中,为了保证数据的安全性,数据管理员需要根据需要创建账户,并为每个账户赋予不同的权限,以满足不同用户的需求。...