易截截图软件、单文件、免安装、纯绿色、仅160KB

sqlserver获取第n行数据

如何在一个没有主键的表中获取第n行数据,在sql2005中可以用row_number,但是必须指定排序列,否则你就不得不用select into来过渡到临时表并增加一个排序字段。
用游标的fetch  absolute语句可以获取绝对行数下的某行数据,测试代码如下:
set nocount on
--建立测试环境并插入数据,并且表没有主键
create table test(id int ,name varchar(10))
insert into test select 999,'jinjazz'  
insert into test select 888,'csdn'
insert into test select 999,'sqlserver'
--通过游标获取绝对行数
declare myCursor scroll  cursor for select * from  test
open myCursor
fetch  absolute  3  from  myCursor
close myCursor
deallocate myCursor
--删除测试环境
drop table test
set nocount off
/*--
id          name
----------- ----------
999         sqlserver
--*/


相关文档:

sqlserver分页存储过程的用法

create proc P_QuerySplit
 @sqlscript varchar(20),         --表名/SQL语句
 @pageSize int,                  --每页记录数
 @pageIndex int,   &nbs ......

Sqlserver得到汉字拼音首字母存储过程

Sqlserver得到汉字拼音首字母存储过程:
create function [dbo].[fun_getPY]
(
@str nvarchar(4000)
)
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
   set @word=left(@str,1)
   --如果非汉字字符,返回原字符
& ......

SQLServer获取每组前10%的数据

sqlserver2005有关键字ntile(x)和over(partition by.. order by..)子句配合.
比如获取每个表的前10%个字段。
select id , name , colid , rn from (
select * , rn = ntile (10 )
    over (partition by id order by colorder )
from syscolumns )t where rn = 1 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号