`
wangangie29
  • 浏览: 42976 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

 
阅读更多

  以前做人口数据库时经常写些比较长的SQL语句,最长至上百行,看懂也得半天,恰巧在项目中遇见需要提取其中的条件子句,那时对正则也研究了一下,所以就顺便用正则写了个SQL语句分析、校验工具。正则表达式一般用在验证模式中,但个人认为验证只是正则的功能之一,在文本数据处理中才能发挥它的真正作用。利用正则表达式校验分析SQL语句,对于日常开发中,可能有简单问题复杂化之嫌,但这属于一个学习SQL和正则的绝佳机会。 【问题】先提出一个很简单的问题:如何提取Select语句中的使用的表和字段,以及过滤条件? selectcount(distinct pis_p_renk_1.sysid) asresult,
  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 isnullor
  pis_p_guanlshx.guanlshxbdshj isnullor
  substr(pis_p_guanlshx.guanlshxbdshj, 1, 6) 正则表达式,再将细粒度合成粗粒度部分,最后组成完整正则表达式,可以校验语句,在正则捕获中可以获取各组成部分。
  SQL正则构建工具:用于粗粒度、细粒度正则匹配。
  
  SQL语句分析工具:分析SQL语句各组成部分。
  
  (二)语句构造粗粒度分析(待续)
  (三)细粒度正则匹配
  (四)完整正则表达式搭建
  (五)SQL正则分析过程
分享到:
评论

相关推荐

    Java正则表达式构造SQL语句

    Java正则表达式构造SQL语句Java正则表达式构造SQL语句Java正则表达式构造SQL语句

    用正则表达式提取SQL

    1. 正则表达式的基本语法和使用,特别是如何构建匹配SQL语句的正则模式。 2. 如何在代码中应用正则表达式进行文本匹配。 3. SQL的常见关键字和结构,理解这些对于构建有效的正则表达式至关重要。 4. 源码分析,如何...

    SQL 语法分析,正则表达式解析C#文件;正则表达式实现的语法分析引擎

    这些资源可能涵盖具体的SQL查询语法、正则表达式的模式构造、C#代码示例以及如何结合两者进行文本解析。 总之,理解和掌握SQL语法分析以及正则表达式的使用,对于任何IT专业人士,尤其是从事数据库管理和软件开发的...

    模仿SQL语句的正则表达式

    模仿SQL语句的正则表达式练习,是我学习正则表达式过程中,对字符串经常sql语句匹配,达到练习正则表达式的目的。语句中包括了,"创建超级用户权限,"*.*"代表数据库里的所有数据,"root"代表超级用户名称,"%"代表...

    正则表达式在数据库查询中的应用

    通过使用正则表达式,可以简化上述例子中的SQL查询语句。例如,同样的查询可以使用如下语句完成: ```sql SELECT * FROM Tablel WHERE name REGEXP '^[ABCD].*P$'; ``` 这里,`REGEXP`是正则表达式的SQL谓词,`'^...

    sql_server 正则表达式

    正则表达式,在SQL Server 2005中作为一种强大的文本处理工具,极大地增强了数据库处理复杂文本数据的能力。传统的T-SQL虽然在处理数据方面表现卓越,但在文本分析和操作上显得力不从心,尤其是在执行复杂的文本分析...

    SQL修改表语句和正则表达式

    本文将深入探讨SQL修改表语句以及正则表达式在数据处理中的应用。 **SQL修改表语句** SQL修改表语句允许我们动态地更新数据库中的表结构,以便适应业务需求的变化。以下是一些常见的SQL命令: 1. **添加列 (ALTER...

    使用正则表达式匹配tsql注释语句

    正则表达式(Regular Expression)是一种强大的文本处理工具,可以用来匹配、查找、替换等操作,包括匹配SQL中的注释语句。在本文中,我们将探讨如何使用正则表达式有效地匹配T-SQL(Transact-SQL)中的注释。 首先...

    利用正则表达式对SQL解释的方法

    通过组合这些正则表达式,我们可以构建一个完整的解析器来处理各种复杂的SQL语句。此外,还需要考虑到SQL语句可能存在大小写不一致的问题,因此在实际应用中可能还需要对输入的SQL语句进行一定的预处理,比如统一...

    mysql update正则替换sql语句

    MySQL的UPDATE语句用于修改表中的数据,当我们需要根据复杂的条件来更新记录时,可以利用正则表达式(REGEXP)来指定匹配模式。在MySQL中,可以使用REGEXP和RLIKE操作符来实现正则表达式匹配。 首先,来看一个简单...

    Java源代码案例 - 使用正则表达式解析sql语法树.zip

    在"Java源代码案例 - 使用正则表达式解析sql语法树.zip"这个压缩包中,我们可以推测包含了一个使用Java实现的SQL语句解析器,可能通过正则表达式解析SQL语句的语法结构。 在SQL(Structured Query Language)中,...

    MySQL正则表达式

    MySQL支持通过`REGEXP`操作符来进行正则表达式的匹配,这对于复杂的数据查询和模式匹配非常有用。如果你熟悉PHP或Perl等语言中的正则表达式,那么在MySQL中使用它们会相对容易上手。 #### 三、正则表达式基本语法 ...

    运用正则表达式匹配所有表名

    写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+)\]?[\r\n\s]* 支持各种表达式 SELECT * FROM Config SELECT * FROM

    Oracle数据库正则表达式

    使用正则表达式可以编写简洁、强大的 SQL 语句,提高数据处理的效率和灵活性。熟练使用正则表达式可以帮助用户快速搜索、替换和验证数据,并提供高度的灵活性。 在 Oracle 数据库中,正则表达式的应用非常广泛,...

    API文档Ajax+jQuery+正则表达式+SQL+JDK1.7

    本压缩包集合了多种API文档,包括Ajax、jQuery、正则表达式、SQL以及JDK 1.7的相关内容,对于学习和提升IT技能大有裨益。 首先,我们来看`jQuery文档.chm`,jQuery是一个轻量级、高性能的JavaScript库,它简化了...

    通过Java正则表达式去掉SQL代码中回车换行和多余空格

    在编写代码工具或进行代码清理时,处理SQL语句的格式化问题是一个常见的需求。...通过上述的知识点,我们可以更加深入地理解和掌握如何使用Java正则表达式来处理SQL语句的格式化问题,从而提升代码质量与维护效率。

    C#正则表达式提取网页数据

    本主题聚焦于利用C#的正则表达式功能来从网页中提取数据,并将其存储到SQL Server 2005数据库。下面将详细阐述这一过程中的关键知识点。 一、正则表达式(Regular Expression) 正则表达式是一种强大的文本处理工具...

    ORACLE动态执行语句 正则表达式 游标

    ORACLE中的正则表达式的使用 动态执行SQL语句 动态创建游标 游标的创建方式 ORACLE循环操作 for循环 loop循环 while循环 判断操作

Global site tag (gtag.js) - Google Analytics