随笔分类 - SQL Server
摘要:1、分割字符串函数create function split( @SourceSql varchar(8000), @StrSeprate varchar(10))returns @temp table(F1 varchar(100))asbegin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@SourceSql) while @i>=1 begin insert @temp values(left(@SourceSql,@i-1)) ...
阅读全文
摘要:sp_executesql命令比EXEC命令更灵活,因为它提供一个接口,该接口及支持输入参数也支持输出参数。 这功能使你可以创建带参数的查询字符串,这样就可以比EXEC更好的重用执行计划。 sp_executesql的构成与存储过程非常相似,不同之处在于你是动态构建代码。 它的构成包括:代码块,参数声明部分,参数赋值部分 语法:EXEC sp_executesql@stmt = <statement>,--类似存储过程主体@params = <params>, --类似存储过程参数部分<params assignment> --类似存储过程调用(参数赋值)@
阅读全文
摘要:今天遇到一个平时很少碰到的问题,现记录如下:在数据库里有一个执行插入或更新(已存在)操作的存储过程Sp_CreateOrUpdateXXX,在程序中通过 SqlCommand.ExecuteNonQuery()执行过程时,没有返回受影响行数。通过检查存储过程发现,在存储过程的代码首行多了一句sql:SET NOCOUNT ON; 删除该句代码后,返回了受影响行数。资料:当 SET NOCOUNT为ON 时,不返回计数(表示受 Transct-SQL 语句影响的行数)。如果存储过程中包含的一些语句并不返回许多实际的数据,则给设置由于大量减少了网路流量,因此可以显著提高性能。当 SET NOCOU
阅读全文
摘要:原文地址:http://www.edulife.com.cn/Infos/200608/2514527295.html这篇文章描述一种通过内嵌的OPENXML T-SQL行设定语句分析所给的XML串从一个T-SQL存储过程到另一个传递输入参数的变化数量的选择方法。参数传递的XML 串表示将采用下列形式: <MSG P1="V1" P2="V2" P3="V3" ....... Pn="Vn"/>这里P1,P2...Pn是参数名和V1,V2,V3 Vn是它们的数值。 这种方法的主要优势是全部输入参数通过一
阅读全文
摘要:--1. 构造使用IN子句的动态Transact-SQL方法进行编号查询--a. 要查询的字段类型是数字型--查询的值列表DECLARE @idlist varchar(100)SET @idlist='1,2,3'--拼接并执行动态Transact-SQL语句EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')GO--b. 要查询的字段类型是字符型--查询的值列表已经加上了字符串边界符DECLARE @idlist varchar(100)SET @idlist=''
阅读全文
摘要:本文内容来自百度百科:http://baike.baidu.com/view/1031973.htmCREATE PROCEDURE 创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。 可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。 也可以创建在 Microsoft SQL Server启动时自动运行的存储过程。语法 CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VAR
阅读全文
摘要:表分区主要分为三步:1、创建分区函数2、创建分区架构3、创建表并关联分区架构准备工作:(为数据库创建文件组和文件)创建文件组语法:ALTER DATABASE 数据库名 ADD FILEGROUP 文件组名;如:ALTER DATABASE SMMP ADD FILEGROUP FG0;创建文件语法:ALTER DATABASE SMMP ADD FILE(NAME = '逻辑文件名',FILENAME = '物理文件名') TO FILEGROUP 文件组名;如:ALTER DATABASE SMMP ADD FILE(NAME = 'FILE_0&#
阅读全文
摘要:原文地址: sql server 2000/2005 游标的使用操作 【1.定义游标】游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式:DECLARE 游标名称 [INSENSITIVE] [SCROLL]CURSOR FOR select语句[FOR{READ ONLY|UPDATE[OF 列名字表]}]参数说明:INSENSITIVE选项:说明所定义的游标使用SELECT语句查询结果的拷贝,对游标的操作都基于该拷贝进行。因此,这期间对游标基本表的数据修改不能反映到游标中。这种游
阅读全文
摘要:SQL Server2005 表分区三步曲 --> Title: SQL Server2005 表分区三步曲 --> Author : wufeng4552--> Date : 2009-10-26前言SQL Server 2005开始支持表分区,这种技术允许所有的表分区都保存在同一台服务器上。每一个表分区都和在某个文件组(filegroup)中的单个文件关联。同样的一个文件/文件组可以容纳多个分区表。在这种设计架构下,数据库引擎能够判定查询过程中应该访问哪个分区,而不用扫描整个表。如果查询需要的数据行分散在多个分区中,SQL Server使用多个处理器对多个分区进行并行查询
阅读全文
摘要:原文地址:http://www.blogjava.net/jasonxiao/archive/2008/06/11/207049.html属性内容文档名称:触发器使用教程和命名规范文档版本号:V1.0文档编写日期:2006-12-4文档状态:修订稿作者:李振国发布日期:2006-12-5目录触发器使用教程和命名规范1,触发器简介2,触发器示例3,触发器语法和功能4,例一:行级触发器之一5,例二:行级触发器之二6,例三:instead of触发器7,例四:语句级触发器之一8,例五:语句级触发器之二9,例六:用包封装触发器代码10,触发器命名规范1,触发器简介触发器(Trigger)是数据库对象的
阅读全文
摘要:原文地址:http://www.jb51.net/article/18877.htm按常规的思路,我们会这样写 代码如下:String searchName ="Sam"; String strSql = "select * FROM Table1 where Name like '%@Name%' "; SqlParameter[] parameters = { new SqlParameter("@Name", searchName) }; 但结果是查询不到结果,跟踪代码也没有发现错误,又不想用字符串拼接的方式(防
阅读全文
摘要:1、concat()函数 1.1 MySQL的concat函数可以连接一个或者多个字符串,如 mysql> select concat('10'); +--------------+ | concat('10') | +--------------+ | 10 | +--------------+ 1 row in set (0.00 sec) mysql> select concat('11','22','33'); +------------------------+ | concat('1
阅读全文
摘要:--对升级到 SQL Server 2005 或更高版本的数据库使用 PIVOT 和 UNPIVOT 时,必须将数据库的兼容级别设置为 90 或更高--数据库要与之兼容的 SQL Server 的版本。version 的数据类型为 tinyint,默认值为 NULL。--该值必须为下列值之一:--80 = SQL Server 2000--90 = SQL Server 2005--100 = SQL Server 2008exec sp_dbcmptlevel FamilyFinanceData,90/*标题:普通行列转换(version 2.0)作者:爱新觉罗.毓华(十八年风雨,守得冰山雪
阅读全文
摘要:SQL 递归查询示例:create table #EnterPrise ( Department nvarchar(50),--部门名称 ParentDept nvarchar(50),--上级部门 DepartManage nvarchar(30)--部门经理)insert into #EnterPrise select '技术部','总经办','Tom'insert into #EnterPrise select '商务部','总经办','Jeffry'insert into #EnterPri
阅读全文
摘要:if object_id('tb') is not nulldrop table tbgocreate table tb(name varchar(25))insert into tbselect 'z,y,w,c' union allselect '1,2,3,4' select name=substring(a.name,b.number,(charindex(',',a.name+',',b.number))-b.number) from tb a,master..spt_values b where b.t
阅读全文
摘要:PIVOT和UNPIVOT关系运算符是SQL Server 2005提供的新增功能,因此,对升级到SQL Server 2005的数据库使用PIVOT和UNPIVOT时,数据库的兼容级别必须设置为90(可以使用sp_dbcmptlevel存储过程设置兼容级别)。 在查询的FROM子句中使用PIVOT和UNPIVOT,可以对一个输入表值表达式执行某种操作,以获得另一种形式的表。PIVOT运算符将输入表的行旋转为列,并能同时对行执行聚合运算。而UNPIVOT运算符则执行与PIVOT运算符相反的操作,它将输入表的列旋转为行。 在FROM子句中使用PIVOT和UNPIVOT关系运算符时的语法格式如下:
阅读全文
摘要:排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:1. row_number2. rank3. dense_rank4. ntile 下面分别介绍一下这四个排名函数的功能及用法。在介绍之前假设有一个t_table表,表结构与表中的数据如图1所示:其中field1字段的类型是int,field2字段的类型是varchar一、row_number row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号。row_number函数的用法如下面的SQL语句所示:select row_number() over(or
阅读全文
摘要:微软从SQl2005起引入了CTE(Common Table Expression)以强化T-SQL。这是一个类似于非持久视图的好东东。按照MSDN介绍1、公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。CTE 可用于: 创建递归查询。有关详细信息,请参阅使用公用表表达式的递归查询。 在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据
阅读全文
摘要:一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。 特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定义的表名被调用两次以上,则优化器会自动将WITH AS短语所获取的数据放入一个TEMP表里,如果只是被调用一
阅读全文