代码改变世界

简单实用SQL脚本Part:查找SQL Server 自增ID值不连续记录

2010-08-30 20:11 by 听风吹雨, 11566 阅读, 6 推荐, 收藏, 编辑
摘要:在很多的时候,我们会在数据库的表中设置一个字段:ID,这个ID是一个IDENTITY,也就是说这是一个自增ID。当并发量很大并且这个字段不是主键的时候,就有可能会让这个值重复;或者在某些情况(例如插入数据的时候出错,或者是用户使用了Delete删除了记录)下会让ID值不是连续的,比如1,2,3,5,6,7,10,那么在中间就断了几个数据,那么我们希望能在数据中找出这些相关的记录,我希望找出的记录是3,5,7,10,通过这些记录可以查看这些记录的规律来分析或者统计;又或者我需要知道那些ID值是没有的:4,8,9。 解决办法的核心思想是: 获取到当前记录的下一条记录的ID值,再判断这两个ID值.. 阅读全文

简单实用SQL脚本Part6:特殊需要的行转列

2010-08-12 22:51 by 听风吹雨, 3785 阅读, 6 推荐, 收藏, 编辑
摘要:一.数据库SQL Server 行转列(Row To Column)(一)需求 原始表的数据的结构如图1所示,把相同的guid的code值转换为列值。(图1)(二)目标 我们希望达到的效果如图2所示,这里的guid变成唯一的了,这行的记录中包含了这个guid所对应的code字段值。(图2)(三)分析与实现 要实现图1到图2的转变,这就是所谓的行转列,下面我们来讲讲具体的实现:1.首先我们先创建一个测试表,方便后面的效果展现;Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHigh... 阅读全文

SQL Server Url正则表达式 内存常驻 完美解决方案

2010-07-31 04:12 by 听风吹雨, 3273 阅读, 2 推荐, 收藏, 编辑
摘要:在使用SQL Server2005扩展函数进行性能优化已经提到过把SQL Server中的表装载到内存中,通常这样做的目的是让频繁的表查询能通过在内存中查找来优化数据库性能,从而减少表的查询,减少IO方面的消耗。 这篇文章的目的就是为了解决使用SQL Server2005扩展函数进行性能优化中表记录更新导致函数返回结果有误的问题。产生这个问题的原因是:如果表更新了,而程序已经把整个表加载到内存了,所以会导致调用函数时返回的结果有误。我们需要重新注册函数,如果不重新注册函数,那么就需要数据库重启服务了,因为那个程序集是在服务启动的时候就初始化了。 上面这个问题的解决方案就是: 在表中创建一个.. 阅读全文

SQL Server 批量生成bcp命令

2010-06-02 15:41 by 听风吹雨, 3547 阅读, 1 推荐, 收藏, 编辑
摘要:特别说明一下,这个批量生成bcp命令是有一些条件限制的:需要导出数据的表的名称是要有规律的,表的名称是需要连续、不间断的,表名最好是以数字来递增的,不过也可以是字母的。 我之所以会写这个批量生成SQL是因为我数据库中表名类似于:RawActivatePDPContextReq_0401,RawActivatePDPContextReq_0402,RawActivatePDPContextReq_0403等等,所以下面的SQL对大部分人来说没有什么意义,但我想表达的是:我们可以SQL来解决一些问题。 图1是一个适用使用本文这个脚本的数据库表列表,我们的需求是为gbRawActivate2... 阅读全文

留念2010年6月1日——SQL

2010-06-02 14:22 by 听风吹雨, 756 阅读, 1 推荐, 收藏, 编辑
摘要:今天做了一些SQL的题目,感觉自己还是有很多地方不足的。比如一些函数的使用,要么是函数名记不得,要么就是函数中的参数记不得,所以,决定以后多敲敲SQL代码。 今天就先贴些被遗忘的SQL,以便以后提醒自己下次不能再犯同样的错误。[代码] 记得还有一道这样的题目:查询出最低分数的记录。这样的需求最容易被认为使用top 1就可以解决了,但是在很多情况下有可能最低分数的记录有多条,这样会漏掉很多的记录。我... 阅读全文

纯真QQIP库导入到SQL Server详解

2010-05-27 22:49 by 听风吹雨, 5536 阅读, 5 推荐, 收藏, 编辑
摘要:相信很多人都是需要通过用户的IP来确认用户是属于哪个区域的,最新的QQIP数据库纯真版20100515,里面的IP数据记录已经达到了:378448条。它收集了包括中国电信、中国移动、中国联通、长城宽带、聚友宽带等 ISP 的最新准确 IP 地址数据。包括最全的网吧数据。本来这个IP库的用意是在QQ上能显示对方的地理位置,在我们的程序中也偶尔有需要的时候,所以把它导入到我们的数据库中成为一张表是非常... 阅读全文

C#获取URL参数值

2010-05-27 20:38 by 听风吹雨, 64533 阅读, 9 推荐, 收藏, 编辑
摘要:在写程序的时候,我们经常需要对页面进行传参数,比如page?id=1234,那么在page这个页面中就直接可以使用string id = Request.QueryString["id"];来获取参数id的值1234了。这是一个人人都知道的基础知识。 上面的方法:Request.QueryString,它会把传入的URL进行分析,并把结果保存在一个键值(key value)的Collection中... 阅读全文

使用SQL Server 扩展函数进行性能优化

2010-05-26 21:55 by 听风吹雨, 5237 阅读, 5 推荐, 收藏, 编辑
摘要: SQL Server2005扩展函数已经不是一件什么新鲜的事了,但是我看网上的大部分都是说聚合函数,例子也比较浅,那么这里就讲讲我运用扩展函数来优化数据库性能的例子,希望和大家一起分享这个经验。如果你还不知道什么是SQLCLR,那么你可以参考:SQL Server扩展函数的基本概念。需求说明大家在使用SQL Server开发的时候一定会遇到这样的需求,那就是通过Table_Name1表的两个字段Column1、Column2来查询在Table_Name2表中符合这两个条件的记录 阅读全文

SQL Server扩展函数的基本概念

2010-05-26 19:57 by 听风吹雨, 4269 阅读, 1 推荐, 收藏, 编辑
摘要: 什么是SQL Server扩展函数呢?它实际上就是把C#或VB.NET的代码拿到SQL Server上去执行。反过来思考,那就是当你想对表数据进行比较复杂的逻辑处理时,写SQL又太麻烦,那么你就可以是否可以通过SQLCLR来解决这个问题了。下面是我摘自wikipedia对SQLCLR的解释。SQL CLR(SQL Common Language Runtime) 是自 SQL Server 2005 才出现的新功能,它将.NET Framework中的CLR服务注入到 SQL Server 中,让 SQL Server 阅读全文

留念2010年5月21日

2010-05-25 20:32 by 听风吹雨, 393 阅读, 0 推荐, 收藏, 编辑
摘要:由于之前留念2010年5月5日的小开心,在发布了SQL Server 全文索引的硬伤随笔之后,在好奇心的驱动下,我到Google上搜索了一下关键字:SQL Server 全文索引的硬伤,在返回的结果中意外的发现了我的文章给转载到了IT168的技术开发的专栏中,而且也被转载到TT中国的TT数据库中性能调优栏目中。 在大家看来,这也许是一件很小的事情,但是对我来说是有一些意义的,今天我把它记录下来,是... 阅读全文

留念2010年5月5日

2010-05-25 20:11 by 听风吹雨, 486 阅读, 0 推荐, 收藏, 编辑
摘要:今天早上,公司的一位同事在公司的QQ群中发了一个关于我的文章给博客园的电子期刊收录的信息。一开始看到图片中自己的笔名,还真的不敢相信,太意外了。 有一点比较惭愧的就是之前我还不知道博客园有电子期刊这一个栏目,呵呵,OK,我承认我孤陋寡闻。 文章给收录或许对大家来说是一件很小很小的事情,但是它给我带来的意义却是重大的,因为我的Blog文第一次得到了第三方的肯定。你说我能不开心吗? 虽然自己写的还很粗... 阅读全文

SQL Server 全文索引的硬伤

2010-05-13 21:10 by 听风吹雨, 25195 阅读, 5 推荐, 收藏, 编辑
摘要:本文关键字:SQL Server全文索引、CONTAINS、FREETEXT、CONTAINSTABLE、FREETEXTTABLE等谓词。想象这样一个场景:在DataBase_name.dbo.Table_name中有一个名为Title(标题)和Contents(内容)的字段,现在需要查询在Title或者Contents中包括“qq”字符的所有记录。面对这样的一个场景,我们通常都会写这样一个脚本:SELECT * FROM DataBase_name.dbo.Table_name WHERE Title LIKE '%qq%' OR Contents LIKE '%q 阅读全文

简单实用SQL脚本Part2:日期和时间函数

2010-04-21 18:25 by 听风吹雨, 2939 阅读, 3 推荐, 收藏, 编辑
摘要:一、SQL Server 日期函数集合Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--参考http://msdn.microsoft.com/zh-cn/library/ms186724.aspx--1:获取系统日期和时间值函数--getdate()SELECTGETDATE()AS'today'--getutcdate()SELECTGETUTCDATE()AS'today'--2:修改日期和时间值函数- 阅读全文

SQL Server 使用bcp进行大数据量导出导入

2010-04-17 20:03 by 听风吹雨, 11501 阅读, 3 推荐, 收藏, 编辑
摘要:SQL Server的导出导入方式有:在SQL Server中提供了导入导出的界面操作。在界面操作中又分【复制一个或多个表或视图的数据】和【编写查询以指定要传输的数据】两种模式,第一种是直接对表、视图进行全部字段、记录进行导出,而第二种就是可以通过SQL语句来控制导出导入的字段和行。使用 简单但有用的SQL脚本 中的【表复制】这里面的方法。 再一种就是在命令行中使用bcp命令来导入导出数据,需要特别说明的是,这是对大数据量导入导出就好的办法。下面是我实践出来可以使用的脚本,但是我在使用bcp的时候遇到了一些问题,希望大家给于帮助。谢谢。(PS:问题在下面代码中)使用xp_cmdshel... 阅读全文

使用Excel批量生成SQL脚本(小技巧)

2010-04-15 14:18 by 听风吹雨, 26399 阅读, 7 推荐, 收藏, 编辑
摘要:需求: 我们需要把Excel中的一些资料更新到数据库表中,比如学生的考试系统,在数据中已经有了考生的ID,这里有一份考生ID和考生成绩的Excel表,我们如何把考生成绩更新到数据库表中呢?方案:我们最常使用的做法就是把这个Excel表导入到数据库中,在使用update语句来更新表。没错,这就是我通常使用的方法,但是有些人他们不安常理出牌,有时候客户说:我只会执行SQL,我不知道怎么把Excel导入到数据库中。这个时候我们如何把要更新的内容生产SQL语句给到客户呢?如何是一两条记录,我们手动写SQL就可以了,但是如果有几百个学生,我们要手动写几百条语句吗?是否有批量生成SQL脚本的方法?这就是. 阅读全文

简单实用SQL脚本

2010-04-09 18:32 by 听风吹雨, 47059 阅读, 34 推荐, 收藏, 编辑
摘要:行列互转Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ createtabletest(idint,namevarchar(20),quarterint,profileint)insertintotestvalues(1,'a',1,1000) insertintotestvalues(1,'a',2,2000)insertintotestvalues(1,'a',3,4000)insertint 阅读全文

数据挖掘算法-Apriori Algorithm(关联规则)

2010-03-31 18:07 by 听风吹雨, 71270 阅读, 5 推荐, 收藏, 编辑
摘要:本人刚开始学数据挖掘,虽然之前看过一本《数据挖掘原理与应用:SQL Server 2005数据库》,但是只是大体上了解了一些数据挖掘的概念,并没有深入去了解一个算法。前段时间开始比较深入的学习,就以关联规则作为学习的入口点。这才有了这篇文章。  Apriori algorithm是关联规则里一项基本算法。是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年... 阅读全文

SQL Server 空间换时间的数据库设计

2010-03-30 11:45 by 听风吹雨, 5644 阅读, 3 推荐, 收藏, 编辑
摘要: 我们的系统中很常会用到SMS、Email等的发送,在我们的设计中通常会创建一个Tb_outbox表,当产生数据时,插入到Tb_outbox表,由定时器去读取Tb_outbox的数据进行发送,发送完了再修改Tb_outbox的发送状态。是的,这就是通常的做法,但是当我们的SMS、Email的发送频率和数量足够大的时候,我们的系统就会出现性能、表被锁等问题。那我们如何是好呢? 下面的设计的一个思想就是如标题所述:空间换时间。就个人而言,我感觉这个描述更加贴切:对象的职责分离,把Insert、U 阅读全文

智能手机的截屏讲解

2010-03-25 18:35 by 听风吹雨, 5231 阅读, 0 推荐, 收藏, 编辑
摘要:在很多的手机论坛上我们经常看到一些手机操作的介绍,其中一般都会附上图片的,那这些图片是如何得到的呢?  下面我就介绍几种不同操作系统的手机截屏应该如何做,其中包括OPhone的OMS(Open Mobile System)系统,是基于Android(安卓)1.5版本的基础上开发的;也有Symbian操作系统的;Windows Mobile;BlackBerry(黑莓)等主流操作系统。  【1:OP... 阅读全文

动态表单之数据分页

2010-03-16 19:10 by 听风吹雨, 3101 阅读, 1 推荐, 收藏, 编辑
摘要:我们很常会在项目中提到一个动态表单的概念,比如学校里面学生的考试成绩,当学生登录系统的时候,他当然是希望看到他自己所有科目的成绩;又或者是班主任,他需要看到本班同学所有科目的成绩;这些时候我们一般都会在页面中呈现如下的效果。   但是问题来了,不同科系的同学的科目是不一样的,那么我们在数据库设计的时候通常是把学生、某科成绩作为一条记录,那么这个时候我们就需要做一个行转列的逻辑处理了。解决方法: 使... 阅读全文