文章分类 -  SQL Server

摘要:WITH tt(cid,parent_cid) AS( SELECT ic.cid,ic.parent_cid FROM ItemCat ic WHERE ic.cid=@CID UNION ALL SELECT ic.cid,ic.parent_cid FROM ItemCat ic JO... 阅读全文
posted @ 2013-01-11 15:39 xfyn 编辑
摘要:--检测死锁 --如果发生死锁了,我们怎么去检测具体发生死锁的是哪条SQL语句或存储过程? --这时我们可以使用以下存储过程来检测,就可以查出引起死锁的进程和SQL语句。SQL Server自带的系统存储过程sp_who和sp_lock也可以用来查找阻塞和死锁, 但没有这里介绍的方法好用。 use 阅读全文
posted @ 2012-11-08 16:01 xfyn 编辑
摘要:Create Proc sp_us_lockinfo----------------------------------------------------------------------- Author : HappyFlyStone-- Date : 2009-10-03 15:30:00-- BLOG : http://blog.csdn.net/happyflystone-- 申明 :请保留作者信息,转载注明出处---------------------------------------------------------------------ASBEGIN ... 阅读全文
posted @ 2012-07-04 11:37 xfyn 编辑
摘要:DECLARE @Counts INTEXEC sp_executesql N'select @Counts=count(1) from tbName',N'@Counts int out',@Counts OUTSELECT @Counts 阅读全文
posted @ 2012-05-25 09:54 xfyn 编辑
摘要:--执行作业 t-Sql 语句USE msdb EXEC sp_start_job @job_name = '作业名' 阅读全文
posted @ 2012-03-23 17:51 xfyn 编辑
摘要:declare @a varchar(20)declare @Sql varchar(2000)set @Sql='select @a=a from tb' exec @Sql结果出现错误: 必须声明变量 @a原因:变量与动态语句不能共享一.我想到的方法是用临时表来代替变量,暂时存储数据.把数据写到到临时表中,,再从临时表中取到想要的数据.1 create table #tt2 (3 a varchar(20)4 )5 6 declare @sql varchar(2000)7 set @sql='insert into #tt(a) select a from tb& 阅读全文
posted @ 2012-02-10 11:55 xfyn 编辑
摘要:SQL 中的MD5值加密使用方法:把下面的所有代码拷到sql中运行.调用方法: dbo.MD5('要加密的字符串')还可以自定义几位的加密,方法:在最后面的自定义函数 MD5 增加一个参数 @LenValue int再把倒数几行的SET @sRes = dbo.MD5_WordToHex(@a) + dbo.MD5_WordToHex(@b) + dbo.MD5_WordToHex(@c) + dbo.MD5_WordToHex(@d) 这句代码换成IF @LenValue = 32 SET @sRes = dbo.MD5_WordToHex(@a) + dbo.MD5_Wor 阅读全文
posted @ 2011-12-08 18:09 xfyn 编辑
摘要:在数据迁移过程中,避免有些表结构中存在父子结构,且主键Id设置的是自动标识列。在导入时如有必要,则先清空表中的内容。再在导入时取消自动标识列。TRUNCATE TABLE TModelInfo --清空表中内容 SET IDENTITY_INSERT TModelInfo ON --取消自动标识列 INSERT INTO TModelInfo(FModelId,FModelName,FModelParent) SELECT FModelId,FModelName,FModelParent FROM TModelInfo SET IDENTITY_INSERT TMo... 阅读全文
posted @ 2011-12-07 10:13 xfyn 编辑
摘要:先看下面一个嵌套的查询语句:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->select*fromperson.StateProvincewhereCountryRegionCodein(selectCountryRegionCodefromperson.CountryRegionwhereNamelike'C%') 上面的查询语句使用了一个子查询。虽然这条SQL语句并不复杂,但如果嵌套的层次过多,会使SQL语句非常难以阅读和 阅读全文
posted @ 2011-09-26 16:25 xfyn 编辑
摘要:SELECT MAX(id) FROM table GROUP BY [name]Max(id)取出的是分组后的,每个组中的最大ID.SELECT MAX(id) FROM table 取出的是表中的最大ID 阅读全文
posted @ 2011-09-22 17:19 xfyn 编辑
摘要:SQL Server 容许你嵌套事务,这个特性意味着,即使上一个事务没有完成,也能开启一个新事务。T-SQL容许你通过嵌套BEGIN TRAN嵌套事务。 内置变量@@TRANCOUNT可显示事务的嵌套层级。0表示没有嵌套,1表示嵌套一层,依此类推。COMMIT提交本层事务,但是直到最外层的事务提交了,所有的改变才保存到磁盘。它仅仅时减小@@TRANCOUNT的值。ROLLBACK不论在那层都能回滚所有的事务。当你开始一个事务,@@TRANCOUNT变量自动从0增加到1;当提交了数量减少1个。当回滚了,则数量减为0。正如你所见:COMMIT和 ROLLBACK并不对称。如果你嵌套事务,COMMI 阅读全文
posted @ 2011-08-25 14:12 xfyn 编辑
摘要:Select Convert(Varchar, Cast(123456 As Money), 1) 阅读全文
posted @ 2011-08-01 11:00 xfyn 编辑
摘要:在存储过程中动态创建临时表 下面代码是执行不成功 .DECLARE@CreateTableSqlVARCHAR(1000)--创建临时表的命令SET@CreateTableSql='CreateTable#FirstTable(名称varchar(20)null,'DECLARENamecursorCURSOR--声明游标用于查询大类名称FORSELECTF_nameFROMfood_typeinfoWHEREF_type=0--查询大类的名称OPENNamecursorDECLARE@TypeNameNVARCHAR(20)--存储大类的名称FETCHNEXTFROMName 阅读全文
posted @ 2011-07-13 17:27 xfyn 编辑
摘要:在本文中,GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate()用DateName()就可以获得相应的年、月、日,然后再把它们连接起来就可以了:Select Datename(year,GetDate())+'-'+Datename(month,GetDate())+'-'+Datename(day,GetDate())另外,DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:Select Datename(hour,GetDate())Select Datename(minute,Get 阅读全文
posted @ 2011-05-09 09:02 xfyn 编辑
摘要:select top 1 col_name(object_id('表名'),1) from sysobjects1为要查找的哪列从1开始 阅读全文
posted @ 2011-04-28 14:53 xfyn 编辑
摘要:有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标。本人不喜欢使用游标,我觉得它耗资、效率低;使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活。先看看单条 SQL 语句的分页 SQL 吧。其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。方法1:适用于 SQL Server 2000/2005SELECT TOP 页大小 *FROM table1WHERE id NOT IN ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id )ORDER BY id方法2:适用于 SQL Serve 阅读全文
posted @ 2011-04-25 15:48 xfyn 编辑
摘要:标准的 SQL 的解析顺序为: (1).FROM 子句, 组装来自不同数据源的数据 (2).WHERE 子句, 基于指定的条件对记录进行筛选 (3).GROUP BY 子句, 将数据划分为多个分组 (4).使用聚合函数进行计算 (5).使用 HAVING 子句筛选分组 (6).计算所有的表达式 (7).使用 ORDER BY 对结果集进行排序 阅读全文
posted @ 2011-04-25 15:24 xfyn 编辑
摘要:SQL2005中row_number()等函数的用法2005比2000新增了几个函数,分别是row_number()、rank()、dense_rank()、ntile(),下面以实例分别简单讲解一下。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 create table gg(sname varchar(10),sort varchar(10),num int) 2 go 3 4 insert into gg 5 select 阅读全文
posted @ 2010-10-12 10:12 xfyn 编辑
摘要:将N后单引号里的字符转换为Unicode字符 阅读全文
posted @ 2010-09-30 15:36 xfyn 编辑
摘要:单引号双重角色——字符串引用与转义 在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义,开始学习时动态构成SQL时经常不解。单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解。 1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。SQL> SELECT '''' FROM DUAL;''--'为了证实结果是被第二个单引号转义的第三个单引号(既:SELECT '''' FROM DUAL;),我们做如下两个测试:SQL> S 阅读全文
posted @ 2010-09-30 15:07 xfyn 编辑