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
select 中的case。select type,sum(case venderwhen 'A' then pcselse 0 end),sum(case venderwhen 'C' then pcselse 0 end),sum(case venderwhen 'B' then pcselse 0 end)FROM tablenamegroup by type 显示结果: type vender pcs 电脑 A1 电脑 A1 光盘 B2 光盘 A2 手机 B3 手机 C3
23、说明:初始化表
table1TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by idasc) table_别名order by iddesc declare @a varchar(100),@b varchar(20)select @a='abcdefbcmnbcde',@b='bc' select (len(@a)-len(replace(@a,@b,'')))/len(@b)