随笔分类 - MSSQL应用实例
摘要:CREATE PROCEDURE CN5135_SP_Pagination/****************************************************************** 千万数量级分页存储过程 *****************************************************************参数说明:1.Tables :表名称,视图2.PrimaryKey :主关键字3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc4.CurrentPage :当前页码5.PageSi
阅读全文
摘要:在实际运用中经常会创建这样的结构表Category(Id, ParentId, Name),特别是用于树形结构时(菜单树,权限树..),这种表设计自然而然地会用到递归,若是在程序中进行递归(虽然在程序中递归真的更方便一些),无论是通过ADO.NET简单sql查找还是ORM属性关联都会执行多次sql语句,难免会造成一些性能上的损耗,所以干脆使用sql的函数来解决这个问题,用函数返回我们最终需要的结果。针对这类需求,这里我列出三种常用的递归:以一个节点为基点,列出所有子节点直到无子 (找下级) 。这有点儿像点兵点将,主帅只有一个,下面是左将、右将,左将下面又有千夫长、百夫长,点兵时主帅下令集合,下
阅读全文
摘要:1.创建测试环境,(插入100万条数据大概耗时5分钟)。create database DBTestuse DBTest--创建测试表create table pagetest(id int identity(1,1) not null,col01 int null,col02 nvarchar(50) null,col03 datetime null)--1万记录集declare @i intset @i=0while(@i<10000)begin insert into pagetest select cast(floor(rand()*10000) as int),left(new
阅读全文
摘要:DECLARE @orderno varchar(50) declare @product_no varchar(50) declare @color varchar(50) declare @product_size varchar(50) DECLARE CusCursor CURSOR FOR SELECT orderno FROM tbl_5351_24 OPEN CusCursor FETCH NEXT FROM CusCursor INTO @orderno WHILE (@@FETCH_STATUS = 0) ...
阅读全文
摘要:SQL Server 按某一字段分组 取 最大 (小)值所在行的数据 -- 按某一字段分组 取 最大 (小)值所在行的数据 -- (爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23于浙江杭州) /* 数据如下:name val memoa 2 a2(a的第二个值)a 1 a1--a的第一个值a 3 a3:a的第三个值b 1 b1--b的第一个值b 3 b3:b的第三个值b 2 b2b2b2b2b 4 b4b4b 5 b5b5b5b5b5*/ -- 创建表并插入数据: create table t...
阅读全文
摘要:最近更换了新服务器,操作系统Windows Server 2008 X64,数据库SQL Server 2008 X64,Office 2007(好像只有32位),在存储过程执行OpenDatasource导入Access数据的时候遇到问题了,Oledb 4.0已经不被支持,以下是遇到的若干错误提示:因为 OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Ace.OLEDB
阅读全文
摘要:分组查询中每组中某列的各行字符数据相加显示,即把每组中多行数据的某列通过字符相加显示成一行。例如:分组查询的结果如下, type name score 1 frank 90 1 joane 80 2 tom 100 2 jack 50 3 dong 99 3 bruce 90我想要的结果是 type names sumScore 1 frankjoane 170 2 tomjack 150 3 dongbruce 189请高手帮我写写这个sql语句,谢谢!CREATE FUNCTION dbo.f_str(@type int) RETURNS varchar(8000) AS BEGIN ..
阅读全文
摘要:如果是2005以上版本,直接:selectltrim(cast(col asfloat)) from tb例如:DECLARE @lastprice_new VARCHAR(50)SELECT @lastprice_new=ltrim(cast((16955.20) as float))PRINT @lastprice_new打印出来:16955.2例如:DECLARE @str_md5 VARCHAR(32) DECLARE @id VARCHAR(50) DECLARE @lastprice_new VARCHAR(50) SELECT @id=id ,@lastpric...
阅读全文
摘要:SQL SERVER中是允许有自定义函数,Microsoft SQL Server并不将用户限制在定义为 Transact-SQL语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。函数是由一个或多个 Transact-SQL语句组成的子程序,可用于封装代码以便重新使用。尽管自定义函数在数据量庞大的时候,效率上有欠缺,但是在中小型数据库中,还是可以使用,现将我数据库中所有的自定义函数与大家分享,并搜集了CSDN帖子中出现的一些自定义函数进行整理测试,例如fredrickhu(小F) 、dawugui(爱新觉罗.毓华) 、happyflystone(无枪狙击手)、dobear_0922(
阅读全文
摘要:01、去除字符串中的html标记及标记中的内容02、去除字符串中连续的分割符03、求第一个字符串中第二个串的个数04、综合模糊查询05、将十进制转成十六进制06、求两个字符串中相同的汉字及字母的个数07、生成n位随机字符串08、取出字符串中的汉字、字母或是数字09、根据字符分割字符串的三种写法10、将数字转换千分位分隔形式11、取汉字首字母的两个函数12、根据身份证得到生日函数13、根据身份证计算性别函数14、将身份证的15位号码升级为18位15、通过身份证获得户籍16、多个数据项的字符串取指定位置字符17、中缀算术转后缀算术表达式并计算的函数18、人民币小写金额转大写19、向左填充指定字符串
阅读全文
摘要:Create FUNCTION [dbo].[SplitToTable] ( @SplitString nvarchar(max), @Separator nvarchar(10)=' ' ) RETURNS @SplitStringsTable TABLE ( [id] int identity(1,1), [value] nvarchar(max) ) AS BEGIN DECLARE @CurrentIndex int; DECLARE @NextIndex int; DECLARE @ReturnText nvarchar(max); S...
阅读全文
摘要:合并列值表结构,数据如下:id value----- ------1 aa1 bb2 aaa2 bbb2 ccc需要得到结果:id values------ -----------1 aa,bb2 aaa,bbb,ccc即:group by id, 求 value 的和(字符串相加)1. 旧的解决方法(在sql server 2000中只能用函数解决。)--1. 创建处理函数create table tb(id int, value varchar(10))insert into tb values(1, 'aa')insert into tb values(1, 'b
阅读全文
摘要:--************************************将数字年月日变换成中文 CREATE FUNCTION ymdseq(@ymd datetime)RETURNS varchar(24)ASBEGINdeclare @x varchar(2),@y varchar(2),@yy varchar(4),@dd varchar(6),@z varchar(2),@e varchar(2),@r varchar(2),@t varchar(2) set @e=case when left(datepart(year,@ymd),1)='1' then
阅读全文
摘要:函数:ALTER FUNCTION [dbo].[MD5] ( -- 源字符串 @src varchar(255), -- 加密类型(16/32) @type int = 32)RETURNS varchar(255)WITH EXECUTE AS CALLERASBEGIN -- 存放md5加密串(ox) DECLARE @smd5 varchar(34) -- 加密字符串 SELECT @smd5 = sys.fn_VarBinToHexStr(hashbytes('MD5', @src)); IF @type=16 SE...
阅读全文
摘要:AspxGridView使用手记一、 基本使用方法 41.导入Dll文件 42.Asp.Net页面控件注册 43. Asp.Net页面控件声明 54.删除licenses.licx协议文件(盗版) 55.功能概述 5二、 绑定数据(单层) 51.使用DataSource属性绑定DataTable 52.使用DataSourceID属性绑定SqlDataSource 63.使用DataSourceID属性绑定ObjectDataSource 64.使用DataSourceID属性绑定LinqDataSource 95.使用DataSourceID属性绑定XmlDataSource 10三、 绑定
阅读全文
摘要:Create PROCEDURE SP_Pagination/****************************************************************** 千万数量级分页存储过程 *****************************************************************参数说明:1.Tables :表名称,视图2.PrimaryKey :主关键字3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc4.CurrentPage :当前页码5.PageSize :分页尺
阅读全文
摘要:SQL Server 2008 评估期已过解决方法 SQL Server 2008有180天的试用期,过期后会提示“评估期已过”的提示。 1、进入SQL Server安装中心: 2、选择“维护”-“版本升级” 3、输入密钥: 其他的根据提示操作。 附SQL Server序列号:开发版: PTTFM-X467G-P7RH2-3Q6CG-4DMYB企业版: JD8Y6-HQG69-P9H84-XDTPG-34MBB如以上操作还是连接不进服务器,修改系统时间(把时间提前)或者接着向下看:如果问题依然没有解决还是显示评估期已过(据说这是未安装sql2008sp1的一个bug)?第一步:先去注册表把?H
阅读全文
摘要:先转换成decimal,再转换成字符型就行了. 例如: declare @a float set @a=1.6007e+007 select convert(nvarchar(38),convert(decimal(38,0),@a))
阅读全文
摘要:在sql server 中实现分解字符串的方法的脚本如下:create Function [dbo].[fn_SplitStr]( @SourceSql VARCHAR(max), -- 字符串 @StrSeprate VARCHAR(10) -- 用于分解的字符)RETURNS @temp TABLE(F1 VARCHAR(100))AS BEGIN DECLARE @i INT SET @SourceSql = RTRIM(LTRIM(@SourceSql)) SET @i=CHARINDEX(@StrSeprate,@SourceSql) ...
阅读全文
摘要:type valuea 0b 1c 2d 3a 2a 3d 1b 0c 0得到结果:type valuea 0,2,3b 1,0c 2,0d 3,1select [type], stuff((select ','+ltrim(value) from tb where [type]=[type] for xml path('')),1,1,'') [value]from tbgroup by [type];
阅读全文