【SQL server】创建零时表格,实现数据的分析
2013-03-11 13:31
471 查看
在进行客户技术支持时常常会遇到这样的问题,就是客户需要一个功能,但是我们没有办法很好的支持和满足,但是又希望能
够快速的提供客户一个方法,而我最最常见的方法就是利用sql去直接对数据库进行处理
有以下两张表格
一张为,存储序号的信息
一张为,存储的一些和IP地址有关系的memo的表格
但是由于memo中信息太多,并不是每个都有用处,因此需要将memo中的信息剔除一些,保留以下所需要的就可以了。
其中需要提出的信息包括了IP地址,IP地址有个大家都知道,每个段位都是0-255,因此如果要做活了,就要做个循环,笔者我现在只要两层循环就可以了。因为我有一个IP地址循环范围。
这个是一个零时表格,其实在建立零时表格之前,我的所有的测试工作都是在建立的实体表格中建立的。最后只要建立的时候,根据实际建立表格是表格名字建立为#info就可以了,就是一个在一个查询页中的建立的一个零时表格
在这里我定义了一下变量,其中IP1.IP2.IP3.IP4
这里的IPj指的是IP3 IPi指的是IP4
i和j就是两个和IP数据值有关系的变量 0-255的这个变量
@name和@a是两个之间相互有关系的变量,只是为了方便,将其中一个赋值给另外一个。
这个是为了方便输入时间信息,因为有两条SQL要变化时间
这边就是两个嵌套循环。
这句话石所有中的最重要的重点,因为原来的memo文件中含有的东西太多,显示出来极不方便去看,而memo总所有的名字都含有Concentrator Name:这个字符,而这里的18 指的就是concentrator name:这个字符的长度,而200就是所显示的长度,这个是我在论坛上提的,高手的回答,如下:
假设:TableA
有以下属性
date
NO
memo
date NO memo
2012-01-01 1 connect from 10.101.1.1 from NO address: 192.168.1.1
2012-01-01 2 connect from 10.101.1.2 from NO address: 192.168.1.2
2012-01-01 3 connect from 10.101.1.3 from NO address: 192.168.1.3
如果我写
select from TableA where memo like '%10.101.1.1%'
那么得到的结果就是
date NO memo
2012-01-01 1 connect from 10.101.1.1 from NO address: 192.168.1.1
我想知道如果我想得到的结果是
date NO memo
2012-01-01 1 10.101.1.1
我的这个SQL该如何去写?
如果你的数据格式固定的话,下面语句可以查找两个from之间的结果,那个5是from这四个字母加上一个空格
SQL code
?
够快速的提供客户一个方法,而我最最常见的方法就是利用sql去直接对数据库进行处理
有以下两张表格
一张为,存储序号的信息
一张为,存储的一些和IP地址有关系的memo的表格
但是由于memo中信息太多,并不是每个都有用处,因此需要将memo中的信息剔除一些,保留以下所需要的就可以了。
其中需要提出的信息包括了IP地址,IP地址有个大家都知道,每个段位都是0-255,因此如果要做活了,就要做个循环,笔者我现在只要两层循环就可以了。因为我有一个IP地址循环范围。
drop table #info2 CREATE TABLE #Info2( event_date datetime NULL, meter_code varchar(max) NOT NULL, IP varchar(max) NULL, Name nvarchar(max) NULL)
这个是一个零时表格,其实在建立零时表格之前,我的所有的测试工作都是在建立的实体表格中建立的。最后只要建立的时候,根据实际建立表格是表格名字建立为#info就可以了,就是一个在一个查询页中的建立的一个零时表格
declare @ip varchar(20) declare @ipj Varchar(20) declare @ipi Varchar(20) declare @name varchar(max) declare @a varchar(max) declare @i int declare @j int declare @endtime varchar(500) declare @starttime varchar(500)
在这里我定义了一下变量,其中IP1.IP2.IP3.IP4
这里的IPj指的是IP3 IPi指的是IP4
i和j就是两个和IP数据值有关系的变量 0-255的这个变量
@name和@a是两个之间相互有关系的变量,只是为了方便,将其中一个赋值给另外一个。
set @starttime='2012-08-01 00:00:00' ------------Query Startime set @endtime='2012-08-07 00:00:00' ------------Query Endtime
这个是为了方便输入时间信息,因为有两条SQL要变化时间
set @j=0 while @j<=22 begin set @ipj=''+@j+'' set @i=1 while @i<=255 begin set @ipi=''+@i+'' set @ip='10.72.'+@ipj+'.'+@ipi SET @a=(select top 1 eventmemo from acquireevent where eventdate between ''+@starttime+'' and ''+@endtime+'' and eventmemo like '%Establish communication link%' and eventmemo like '%'+@ip+':%' order by acquireevent.eventdate desc) set @name=(SELECT SUBSTRING(@a,PATINDEX('%Concentrator Name:%',@a)+18,200)) insert into #Info2 select top 1 acquireevent.eventdate, meter_record.meter_code, @ip as ip, @name as Concentrator_Name/*, eventmemo*/ from acquireevent inner join meter_record on acquireevent.changzhanid=meter_record.changzhanid and acquireevent.ertuid=meter_record.ertuid where eventdate between ''+@starttime+'' and ''+@endtime+'' and eventmemo like '%Establish communication link%' and eventmemo like '%'+@ip+':%' order by acquireevent.eventdate desc set @i=@i+1 end set @j=@j+1 end
这边就是两个嵌套循环。
set @name=(SELECT SUBSTRING(@a,PATINDEX(‘%Concentrator Name:%',@a)+18,200))
这句话石所有中的最重要的重点,因为原来的memo文件中含有的东西太多,显示出来极不方便去看,而memo总所有的名字都含有Concentrator Name:这个字符,而这里的18 指的就是concentrator name:这个字符的长度,而200就是所显示的长度,这个是我在论坛上提的,高手的回答,如下:
假设:TableA
有以下属性
date
NO
memo
date NO memo
2012-01-01 1 connect from 10.101.1.1 from NO address: 192.168.1.1
2012-01-01 2 connect from 10.101.1.2 from NO address: 192.168.1.2
2012-01-01 3 connect from 10.101.1.3 from NO address: 192.168.1.3
如果我写
select from TableA where memo like '%10.101.1.1%'
那么得到的结果就是
date NO memo
2012-01-01 1 connect from 10.101.1.1 from NO address: 192.168.1.1
我想知道如果我想得到的结果是
date NO memo
2012-01-01 1 10.101.1.1
我的这个SQL该如何去写?
如果你的数据格式固定的话,下面语句可以查找两个from之间的结果,那个5是from这四个字母加上一个空格
SQL code
?
相关文章推荐
- 26、SQL Server 数据架构创建之表格的创建
- 通过创建SQL Server 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
- 浅谈SQL Server所实现创建分页功能的存储过程的分析及代码
- 关于jquery实现动态创建表格和动态显示数据的问题?
- 如何实现数据从EXCEL表格导入到SQL Server
- SQL Server创建数据库和数据表的相关约束实现方法
- SQL Server创建数据库和数据表的相关约束实现方法
- 通过创建SQL Server 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
- ASP.NET下将Excel表格中的数据规则的导入数据库思路分析及实现
- BT通信中数据下载的分析和实现
- springmvc实现导出数据信息为excle表格
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- javascript动态创建表格及添加数据实例详解
- CSS+HTML实例集合三,用户自定义创建表格并删除指定行、列,对表格中的数据进行排序,radio单选摁扭之调查问卷、之选择题
- 用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
- Js表格万条数据瞬间加载实现代码
- Vue实现动态创建和删除数据的方法
- bootstrap 实现用 table 表格显示list数据
- 应用SAP PI实现SAP BW数据仓库对于第三方系统数据完美集成以及DELTA加载的分析