随笔分类 -  SQL Server

摘要:--备份环境:把数据库服务器(192.168.1.1)的数据库(TEST)备份到客户端(192.168.1.107)的C$下 --首先,做一个与客户端的映射 exec master..xp_cmdshell 'net use z: \\192.168.1.107\e$ "密码" /user:192.168.1.107\administrator' --说明: /* z: 是映射网络路径对应本机的盘符,与下面的备份对应 \\192.168.1.107\e$ 是要映射的网络路径 192.168.1.107\administrator 192.168.1.107是 阅读全文
posted @ 2010-01-03 11:14 曾祥展 阅读(547) 评论(0) 推荐(0) 编辑
摘要:--多行合并2列并去掉重复列: createtable tb (col1 varchar(10), col2 varchar(10), col3 varchar(10), col4 varchar(10)) go insert tb select'11111' , '222' , 'A' , 1 insert tb select'1111' , '333' , 'A' , 1 insert tb select'2222' , '999' , 'B' , 阅读全文
posted @ 2010-01-03 11:13 曾祥展 阅读(547) 评论(0) 推荐(0) 编辑
摘要:--将一个字符串分成多列 declare@strvarchar(100) set@str='111-222-333-444-555-666-777-888' set@str= 'select '''+replace(@str,'-',''',''')+'''' print@str--select '111','222','333','444','555','666','777','888' exe... 阅读全文
posted @ 2010-01-03 11:12 曾祥展 阅读(1357) 评论(0) 推荐(0) 编辑
摘要:--字符串拆分成行 declare@strvarchar(8000) set@str='a1,b1,c2,d1,e3,f5' --,换成 union all select set@str='select name='''+replace(@str,',',''' union all select ''')+'''' exec(@str) /*name ---- a1 b1 c2 d1 e3 f5 */ --字符串分割函数--拆分成多行 createfu 阅读全文
posted @ 2010-01-03 11:10 曾祥展 阅读(4771) 评论(1) 推荐(0) 编辑
摘要:--合并多行的某一列值 --stuff:删除指定的字符,并在指定的起点处插入另一组字符。 createtable tb (id int,col1 varchar(10)) go insert tb select1 , '曾祥展' insert tb select1 , '学无止境' insert tb select1 , 'ok' insert tb select2 , 'B' droptable tb --函数 createfunction StrLink(@idint) returnsvarchar(8000) as begi 阅读全文
posted @ 2010-01-03 11:09 曾祥展 阅读(1525) 评论(0) 推荐(0) 编辑
摘要:-- 逐行计算、逐行递延、逐行更新 declare@tbtable (工号 int, 姓名 nvarchar(10), 数量 int, 基数 int, 开始号 int, 终止号 int) insert@tb(工号, 姓名, 数量) select1, N'张三', 5 insert@tb(工号, 姓名, 数量) select2, N'李四', 6 insert@tb(工号, 姓名, 数量) sel... 阅读全文
posted @ 2010-01-03 11:08 曾祥展 阅读(590) 评论(0) 推荐(0) 编辑
摘要:--用游标 declare@strvarchar(100) --定义游标 declare DZCursor CURSORforSELECT test_str FROM test where test_str='xxx' --打开游标 open DZCursor --从游标取记录 fetchnextfrom DZCursor into@str --当有记录 while@@fetch_status=0 begin insertinto test (test_str) values ('xxx') --取下一条记录 fetchnextfrom DZCursor int 阅读全文
posted @ 2010-01-03 11:06 曾祥展 阅读(2296) 评论(1) 推荐(1) 编辑
摘要:/*表scores有四个字段,学生stu、班级class、学院institute、分数score。 要求返回:班级考试人数大于10、班级最低分在50分以上、计算机学院、班级平均分从高到低前10名。 可以用任意数据库写SQL 返回字段为班级,平均分。*/ --不准嵌套语句。 selecttop10 class,平均分=avg(score) from tb where institute='计算机学院... 阅读全文
posted @ 2010-01-03 11:05 曾祥展 阅读(1274) 评论(0) 推荐(0) 编辑
摘要:--停止数据库的用户连接 createproc killspid (@dbnamevarchar(50)) as declare@sqlnvarchar(1000), @spidint declare getspid cursorfor select spid from sysprocesses where dbid=db_id(@dbname) open getspid fetchnextfrom getspid into@spid while@@fetch_status=0 begin exec('kill '+@spid) fetchnextfrom getspid in 阅读全文
posted @ 2010-01-03 11:05 曾祥展 阅读(1817) 评论(1) 推荐(0) 编辑
摘要:--电话通话次数以及时长 DECLARE@TTABLE (id INT,号码 INT,通话时长 VARCHAR(8)) INSERTINTO@T SELECT1,21981052,'00:01:19'UNIONALL SELECT2,21981052,'00:00:26'UNIONALL SELECT3,21980021,'00:00:56'UNIONALL SELECT4,21980389,'0... 阅读全文
posted @ 2010-01-03 11:03 曾祥展 阅读(2107) 评论(0) 推荐(0) 编辑
摘要:--有小时、分钟,求平均工作时间 declare@tbtable([日期]varchar(3),[工作时间]varchar(5)) insert@tb select'1号','3:10'unionall select'2号','3:20'unionall select'3号','4:20'unionall select'4号','4:30' selectconvert(varchar(5),dateadd(mi,avg(datediff(mi,0,工作时间)),0), 阅读全文
posted @ 2010-01-03 11:03 曾祥展 编辑
摘要:--如何向一个自增字段插值 createtable tablename(id intidentity(1,1)) go insertinto tablename defaultvalues go setidentity_insert tablename on insert tablename(id) select11 select*from tablename go --set identity_... 阅读全文
posted @ 2010-01-03 11:02 曾祥展 阅读(1381) 评论(0) 推荐(1) 编辑
摘要:createtable news(id int,bid int, title varchar(10)) insertinto news values(1 , 0 , '分类1') insertinto news values(2 , 0 , '分类2') insertinto news values(3 , 0 , '分类3') insertinto news values(4 , 1 , '文章... 阅读全文
posted @ 2010-01-03 11:01 曾祥展 阅读(1185) 评论(0) 推荐(0) 编辑
摘要:--近期价格处于降价趋势(至少调了3次)的所有商品 ifobject_id('[tb]') isnotnulldroptable[tb] go createtable[tb]([日期]datetime,[商品编码]varchar(6),[价格] numeric(3,1)) insert[tb] select'20091101','033001', 11.9unionall select'20091... 阅读全文
posted @ 2010-01-03 10:58 曾祥展 阅读(654) 评论(0) 推荐(0) 编辑
摘要:createtable[tb]([客户编码]varchar(10),[客户名称]varchar(10),[数量]int) insert[tb] select'001','A',2unionall select'001','A',3unionall select'001','A',4unionall select'002','B',1unionall select'002','B',2 --统计 s... 阅读全文
posted @ 2010-01-03 10:57 曾祥展 阅读(1650) 评论(0) 推荐(0) 编辑
摘要:--列和相减 L3-L2declare @test table(L1 varchar(50),L2 int,L3 int)insert into @testselect 'A1',10,10 union allselect 'A1',10,5 union allselect 'A1',5,5 union allselect 'B1',10,20 union allselect 'B1',5,5 s... 阅读全文
posted @ 2010-01-03 10:55 曾祥展 阅读(762) 评论(0) 推荐(0) 编辑
摘要:ALTERPROCEDURE[dbo].[example1] ( @bookervarchar(100) ) AS declare@strvarchar(1000) set@str='select * from tb_itregister where booker in('+@booker+')' execute (@str) 调用: string booker = "a,b"; booker ... 阅读全文
posted @ 2010-01-03 10:54 曾祥展 阅读(10040) 评论(0) 推荐(1) 编辑
摘要:-- 统计交叉相等两列元祖的次数 去掉重复 ifobject_id('[tb]') isnotnulldroptable[tb] go createtable[tb]([num1]varchar(10),[num2]varchar(10)) insert[tb] select'a','b'unionall select'b','c'unionall select'b','a'unionall se... 阅读全文
posted @ 2010-01-03 10:53 曾祥展 阅读(738) 评论(0) 推荐(0) 编辑
摘要:ifobject_id('[tb]') isnotnulldroptable[tb] go createtable[tb](名称 varchar(10),金额 int,标志 varchar(2),日期 varchar(30))--收入1 支出为2 insert[tb] select'a',100,'1','2009-11-23 13:45' unionall select'b',150,'2','2009-11-22 13:45'unionall select'c', 阅读全文
posted @ 2010-01-03 10:52 曾祥展 阅读(819) 评论(0) 推荐(0) 编辑
摘要:--取出点击量最高的文章100篇,每个作者不超过5篇 selecttop100 id,title,tips,author from ( select*,cnt=row_number() over (partition by author orderby tips desc) from tb ) t where cnt 11 then substring(a.Phone, 3, 11) else a.Phone end=b.phone and b.cnt=1 阅读全文
posted @ 2010-01-03 10:50 曾祥展 阅读(1905) 评论(0) 推荐(0) 编辑