随笔分类 -  SQL

在Sql Server 数据库中找到含某个词的所有字段
摘要:问题:找到含某个词的所有表和字段思路:循环INFORMATION_SCHEMA.COLUMNS ,找到所有的表和列,并尝试用select count(1) 的方式 ,如果,返回值大于0,说明,存在,否则不存在。注意点:INFORMATION_SCHEMA.COLUMNS 要进行DATA_TYPE='nvarchar'的筛选,这个根据你所查的值是什么 类型而定。存储过程 CREATE proc [dbo].[sp_FindCol] @strLookfor nvarchar(128) asbeginDECLARE @num intDECLARE @sql nvarchar(400) 阅读全文
posted @ 2011-12-13 12:36 冰羽的世界 阅读(450) 评论(0) 推荐(0)
行转列和列转行
摘要:行列互转,是一个经常遇到的需求。实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现。在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和总结过。为了加深认识,再总结一次。行列互转,可以分为静态互转,即事先就知道要处理多少行(列);动态互转,事先不知道处理多少行(列)。--创建测试环境USE tempdb;GOIF OBJECT_ID('dbo.Orders') IS NOT NULL DROP TABLE dbo.Orders;GOCREATE TABLE dbo.Orders( orderid int NOT... 阅读全文
posted @ 2011-11-29 11:55 冰羽的世界 阅读(6652) 评论(0) 推荐(0)
合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数
摘要:示例表 tb 数据如下id value—————1 aa1 bb2 aaa2 bbb2 ccc第一种SELECT id, [val]=( SELECT [value] +',' FROM tb AS b WHERE b.id = a.id FOR XML PATH('') ) FROM tb AS a 第一种显示结果1 aa,bb,1 aa,bb,2 aaa,bbb,ccc,2 aaa,bbb,ccc,2 aaa,bbb,ccc,第二种SELECT id, ... 阅读全文
posted @ 2011-11-29 11:37 冰羽的世界 阅读(284) 评论(0) 推荐(0)
Sql Server 几个时间计算方法
摘要:下面的参数都是传入一个日期,试验时可用GETDATE()1、求当月第一天select @DATE-DAY(@DATE)+12、求下月第一天select DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)就是在当月第一天的基础上+1月3、求当月最后一天select DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1就是在下月第一天的基础上-1天4、求当月的天数selectDAY(DATEADD(MONTH,1,@DATE-DAY(@DATE)+1)-1)就是对当月最后一天进行day运算5、求当月的所有日期SELECT DATEADD(DAY,NUMBE 阅读全文
posted @ 2011-11-29 11:27 冰羽的世界 阅读(859) 评论(0) 推荐(0)