解析Sql :从update 语句中解析出select语句

问题描述

现在有一个任务,有一批的命令,都是update,insert,delete的批操作。还有一个要求,在执行操作时需要记录下更新数据的历史状态。例如:updatetab1setcol='**',col2='***'whereidin(selecttidfromtab2whereenable='Y

')我的处理是这样的:1.首先解析后得到:select*fromtab1whereidin(selecttidfromtab2whereenable='Y')

2.执行select将历史数据保存到另外的地方。3.执行update命令问题是,我要怎么解析出这个select语句呢?语句不算太复杂,都是单句语句。那么亲,能提供好办法吗?

解决方案

解决方案二:
不就是解析出where子句吗?但你举例中有insert,插入指令是没有where子句的,届时你打算如何处理?
解决方案三:
引用1楼xuzuning的回复:

不就是解析出where子句吗?但你举例中有insert,插入指令是没有where子句的,届时你打算如何处理?

insert的就不需要解析了,而且我想先把update、delete类型的sql解析出来再看Update的。而且从update中解析出where子句,也不是那么容易吧,还是要考虑语句的多样性的

时间: 2024-10-22 14:01:36

解析Sql :从update 语句中解析出select语句的相关文章

vs2012解析不出using,只解析出System.IO.File这种形式,有什么解决方法没?

问题描述 vs2012解析不出using,只解析出System.IO.File这种形式,有什么解决方法没? vs2012解析不出using,只解析出System.IO.File这种形式,有什么解决方法没? 解决方案 检查下程序集有没有引用,程序集有没有冲突. 什么类型解析不了. 忽略IDE的提示,编译本身有没有问题? 解决方案二: 可以在代码段最前面加using System; 解决方案三: 例如这个,我添加引用之后就变成了 而不是using的形式

sql server根据表中数据生成insert语句

几个收藏的根据数据库生成Insert语句的存储过程[修正版] -- ======================================================--根据表中数据生成insert语句的存储过程--建立存储过程,执行spGenInsertSQL 表名--感谢playyuer----感谢szyicol-- ======================================================CREATE proc [dbo].[spGenInser

SQL多表链接查询、嵌入SELECT语句的子查询技术

高级查询技术主要是涉及多个表的链接查询技术.嵌入SELECT语句的子查询技术,把多个查询联合起来的联合技术等. 1. 连接查询 需要同时从两个或者连个以上的表中检索数据.链接就是允许同时从两个表或者两个以上的表中检索数据,指定这些表中的某个或者某些列作为连接条件.在SQL Server中,可以使用两种连接语法的形式,一种是ANSI链接语法形式,这是连接条件出现在FROM子句中;另外一种SQL Server链接语法形式,这是连接条件出现在WHERE条件中. 1. ANSI链接 链接错做可以同时查询

sql 中两个select 语句

问题描述 我需要对多个表进行查询,并且写成存储过程,中间有一部分是有N个SELECT语句,要利用语句来把他们联合起来,但没有做过相关方面的东西,希望高手给点建议和经验!很急的!!!!! 解决方案 解决方案二:用selectcol..fromtableunionselectcol..fromtable列数相同解决方案三:我看你具体情况了.内联接,左联接,右联接解决方案四:太抽象了,不好回答解决方案五:如果列相同用selectcol1,col2...fromtable1unionallselectc

解析SQL Server 2008数据库中的新数据类型

对于关系型数据库来说,表现树状的层次结构始终是一个问题.微软在SQL Server 2005中首次尝试了 解决这个问题,那就是被称之为通用数据表表达式(Common Table Expressions,CTE)的实现方式. 尽管CTE在现有的数据库架构中运行良好,微软找到了一种将此类层次结构作为头等概念来使用的方式 .因此,为了实现这种效果,他们在SQL Server 2008中提出了一种"HierarchId"数据类型 . 在传统的层次结构中,一条记录仅仅储存了一个指向它父记录的引用

mysql中insert into select语句测试

mysql迅速制造大批数据,复制一个表中的(部分或全部)数据到另一个表中. 用法:INSERT INTO table_name1 (field1,field2) SELECT field1,field2 FROM table_name2; 前提条件  代码如下 复制代码 MySQL CREATE TABLE `user` (   `id` int(10) NOT NULL AUTO_INCREMENT,   `username` varchar(30) NOT NULL,   `password

oracle中复杂sql查询语句详解 (1/4)

1.查询语句的使用 使用 select语句和子查询(subquery)可以从一个或多个表,视图,实体试图中返回数据.   1.1相关子查询 可以将子查询(as subquery)或in或exists当成where的一个条件的一部分,这样的查询称为子查询   .where中可以包含一个select语句的子查询   .where中可以包含in,exists语句   .最多可以嵌套16层   .层次过多会影响性能   [例]简单子查询实例   查询是否有的专家既以研究所的名义来申请基金项目,又以大学系

快速掌握MySQL数据库中SELECT语句

本文针对MySQL数据库中的SELECT语句快速精细掌握. MySQL中SELECT语句的基本语法是: 以下是引用片段:SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] [DISTINCT|DISTINCTROW|ALL] select_list [INTO {OUTFILE|DUMPFILE} 'file_name' export_options] [FROM table_references

SQL循序渐进(9)SELECT语句

SELECT语句 在上面的教程中已经有用到SELECT语句.在本节教程中将详细对它进行阐述.SELECT语句是SQL的核心,在你的SQL语句中可能用的最多的就是SELECT语句了.由于大量的选项可以用于SELECT语句,所以整个教程好象就是围这SELECT语句转.当我们构造SQL查询语句(利用了SELECT语句)的时候,认识所有的可能选项和最好的或者最有效率的方法来实现是很有用的.这个教程将为你提供这些技能. SELECT语句用于查询数据库并检索匹配你指定条件的选择数据.SELECT语句有五个主