快速业务通道

sql语句

作者 佚名技术 来源 数据库编程 浏览 发布时间 2012-03-22
使用时 (INTERSECT ALL),不消除重复行。



计算一个库里各个表的记录总数:

select b.name,a.rowcntfrom sysindexes a,sysobjects bwhere a.id=b.idand a.indid<2 and b.xtype=''u''

--统计数据库里每个表的详细情况 EXEC sp_MSforeachtable@command1="sp_spaceused''?''"-

-获得每个表的记录数和容量: EXEC sp_MSforeachtable@command1="print ''?''",@command2="sp_spaceused''?''",@command3= "SELECT count(*)FROM ? "













排序问题

CREATE TABLE [t] (

[id] [int] IDENTITY (1,1)NOT NULL ,

[GUID] [uniqueidentifier] NULL

)ON [PRIMARY] GO

下面这句执行5次

insert tvalues (newid())

查看执行结果

select * from t

1、 第一种

select * from torder by case id

when 4 then 1 when 5 then 2 when 1 then 3 when 2 then 4 when 3 then 5 end

2、 第二种

select * from torder by (id+2)%6

3、 第三种

select * from torder by charindex(cast(idas varchar),''45123'')

4、 第四种

select * from tWHERE idbetween 0 and 5 order by charindex(cast(idas varchar),''45123'')

5、 第五种

select * from torder by case when id>3 then id-5 else idend

6、 第六种

select * from torder by id/ 4 desc,idasc

一条语句删除一批记录 首先id列是int标识类类型,然后删除ID值为5,6,8,9,10,11的列,这里的cast函数不能用convert函数代替,而且转换的类型必须是varchar,而不能是char,否则就会执行出你不希望的结果,这里的"5,6,8,9,10,11"可以是你在页面上获取的一个chkboxlist构建成的值,然后用下面的一句就全部删除了,比循环用多条语句高效吧应该。delete from [fujian] where charindex('',''+cast([id] as varchar)+'','','',''+''5,6,8,9,10,11,''+'','')>0 还有一种就是delete from table1where idin(1,2,3,4 )



---动态SQL基本语法:

1 :普通SQL语句可以用exec执行

Select * from tableNameexec(''select * from tableName'')exec sp_executesql N''select * from tableName'' -- 请注意字符串前一定要加N

2:字段名,表名,数据库名之类作为变量时,必须用动态SQL

declare @fname varchar(20)

set @fname = ''FiledName''

Select @fname from tableName-- 错误,不会提示错误,但结果为固定值FiledName,并非所要。exec(''select'' + @fname + '' from tableName'')-- 请注意 加号前后的 单引号的边上加空格

当然将字符串改成变量的形式也可

declare @fname varchar(20)

set @fname = ''FiledName'' --设置字段名

declare @s varchar(1000)

set @s = ''select'' + @fname + '' from tableName'' exec(@s)-- 成功

exec sp_executesql@s -- 此句会报错



declare @s Nvarchar(1000)-- 注意此处改为nvarchar(1000)

set @s = ''select'' + @fname + '' from tableName''

exec(@s)-- 成功

exec sp_executesql@s -- 此句正确

3. 输出参数

declare @num int,@sqls nvarchar(4000)

set @sqls=''select count(*) from tableName''

exec(@sqls)

--如何将exec执行结果放入变量中?

declare @num int,@sqls nvarchar(4000)

set @sqls=''select @a=count(*) from tableName''

exec sp_executesql@sqls,N''@a int output'',

@num outputselect @num

1 :普通SQL语句可以用Exec执行 例:

Select * from tableNameExec(''select * from tableName'')Exec sp_executesql N''select * from tableName'' -- 请注意字符串前一定要加N







1、说明:复制表(只复制结构,源表名:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号