摘要: /* 功能:实现split功能的函数 */alter function fn_split ( @inputstr varchar(8000), @seprator varchar(10) ) returns @temp table (a varchar(200)) asbegin declare @i intset @inputstr = rtrim(ltrim(@inputstr)) set @i = charindex(@seprator, @inputstr)while @i > = 1 begin insert @temp values(left(@inputstr, @i - 阅读全文
posted @ 2012-03-13 15:01 windback 阅读(196) 评论(0) 推荐(0)
摘要: 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的。而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服。 正常面向集合的思维方式是: 而对于游标来说: 这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想用面向集合的查询方式实现某些功能. 同样的,在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量…… 从游标对数据库的读取方式来说,不难看出游标为什么占用更多的资源,打个比方: 当你从ATM取钱的时候,是一次取1000效率更高呢,还是取10次100?既然游标这么“邪恶”,为什么还要学习游标 我 阅读全文
posted @ 2012-03-13 15:00 windback 阅读(208) 评论(0) 推荐(0)
摘要: 以下所有例子均Studnet表为例:计算字符串长度len()用来计算字符串的长度select sname ,len(sname) from student字符串转换为大、小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写select lower('I AM A STUDENT !')select upper('i am a student !')复制代码截去字符串左、右侧空格 ltrim() 用来将一个字符串左侧的空格去掉 ,rtrim()用来将一个字符串右侧的空格去掉declare @str varchar(100)se 阅读全文
posted @ 2012-03-13 14:59 windback 阅读(209) 评论(0) 推荐(0)
摘要: 返回单个值的函数, 可以当变量用, 比如 select dbo.函数名(参数1, 参数2, ...) from ...where abc = dbo.函数名(参数1, 参数2...)返回表的函数, 可以当数据表来使用, 比如 select * from dbo.函数名(参数1, 参数2, ...) 阅读全文
posted @ 2012-03-13 14:58 windback 阅读(4817) 评论(0) 推荐(0)
摘要: 通常我们在写存储过程的时候会用到拼字符串的情况,特别是表设计采用分表设计的时候,会较常用到拼字符串,在存储过程中如果遇到下面这样的程序段结果会如何?declare @Sql nvarchar(2000),@id intset @id=1set @Sql='select UserID from tb where id='+@idexec(@Sql) 事实证明,这样的结果,拼出来的@sql会是:select UserID from tb where id= 这里的1少了,为什么会这样?这是因为@id是整型,如果要这条sql语句正确执行需要做如下处理:declare @Sql nva 阅读全文
posted @ 2012-03-13 14:57 windback 阅读(3178) 评论(0) 推荐(0)
摘要: create table t1( id int not null identity(1,1), class varchar(3), project varchar(5), model int, spe int, Rd_DwgNO varchar(4))insert into t1select 'DNV', 'H1116', 468, 12000, 'NX03' union allselect 'DNV', 'H1116', 468, 12000, 'NX03' union allselect  阅读全文
posted @ 2012-03-13 14:57 windback 阅读(223) 评论(0) 推荐(0)
摘要: /* ------------------------------------------------------------- 函数: fn_GetPinyin 描述: 汉字转拼音(无数据表版) 使用: dbo.fn_GetPinyin('中华人民共和国') = zhonghuarenmingongheguo 作者: 流香羽(改编:Tony) 博客: http://hi.baidu.com/流香羽 ------------------------------------------------------------- */ --创建函数IF OBJECT_ID('[ 阅读全文
posted @ 2012-03-13 14:56 windback 阅读(922) 评论(0) 推荐(0)
摘要: =============================================-- Title: 实例说明四个排名函数的区别-- Author: maco_wang(叶子)-- Create date: 2011-04-26-- Description: 三国版-- =============================================/*RANK()返回结果集的分区内每行的排名。行的排名是相关行之前的排名数加一。如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。DENSE_RANK()返回结果集分区中行的排名,在排名中没有任何间断。行的排名等于所讨 阅读全文
posted @ 2012-03-13 14:54 windback 阅读(252) 评论(0) 推荐(0)
摘要: 【问题】1,4-10,30 这种形式,如何拆成 9条记录,字段值分别是1,4,5,6,7,8,9,10,30 ------------------------------------1,4-28,30表示 1,4,5,6,7,8,9,10,30就是要拆成9条记录,但是我如何写代码呢?首先用逗号分割,然后横杠表示范围。而且可能是 2,6-8,4,10-12 这种形式。2,6-8,4,10-12要拆分成:2,6,7,8,4,10,11,12【解决方法】1、 先建一个函数2、 /* 功能:实现split功能的函数 */ alter function fn_split ( @inputstr var. 阅读全文
posted @ 2012-03-13 14:54 windback 阅读(155) 评论(0) 推荐(0)
摘要: CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS) 经过严格测试,无千虫问题 LONG 超长字符串 最大长度2G(231-1) 足够存储大部头著作 RAW 固定长度的二进制数据 最大长度2000 bytes 可存放多媒体图象声音等 LONG RAW 可变长度的二进制数据 最... 阅读全文
posted @ 2012-03-13 14:37 windback 阅读(276) 评论(0) 推荐(0)