最忌讳的是抱着希望的猜测,一切凭行事而让思考停止。
SQL SERVER随机取一条记录
上一篇 /
下一篇 2009-09-28 00:26:16
又想到一个新的方法:思路就是构建一个临时表#tmp原样存储目标表并添加一个identity字段,这样的话在临时表中每条记录就有了从1-n的序号了。然后定义一个局部变量,接受一个1-总记录条数的随机数。最后利用identity字段和@rnd变量在where子句中随机从所有记录中过滤出一条来。
51Testing软件测试网EV BSu
s2V%T8fz,H-------------------------------------------------------
if not exists(select * from tempdb.dbo.sysobjects where name like '#tmp%')
select identity(int,1,1) ID,* into #tmp from authors
51Testing软件测试网:DRX9?u4tcd
begin
declare @rnd int
select @rnd=rand()*(select count(*) from #tmp)+1
select * from #tmp
where ID=@rnd
end
---------------------------------------------------------
r{V9CR5U0
SQL 语句:
select * from sysobjects
where id = object_id(N'[dbo].[table_name]')and OBJECTPROPERTY(id, N'IsUserTable') = 1
'注:table_name 为实际要检查的表名
解释: 如果返回记录数为0则表明没有这个表,否则表示已经存在。
51Testing软件测试网:x)p9w#TE3S/I
systemobjects 表中保存着
数据库的所有表、视图和存贮过程等的信息,检索这个系统表即可得到是否存在。此方法还适用于检查视图和存贮过程,相应的标志要改为IsView(视图/查询)或者IsProcedure(存贮过程),table_name 处view_name 或 procedure_name。
!t5b!Q b CC0
评价:这种方法较检查错误代码确定表是否存在的方法相对较麻烦一些,但功能更强大,不仅可以检查表还可以检查视图/查询、存贮过程等,用途比较广泛。后者简便易行,不需要任何先觉条件,但应用范围比较有限。个人认为,如果力求规范的编程,推荐使用第一种也就是搜索系统表的方法判断对象(表、视图等)是否存在。
?,jBiS0
判断一个临时表的存在
时表存在于tempdb的sysobjects中
select * from tempdb.dbo.sysobjects where name like '#你的临时表%'
临时表在tempdb的sysobjects中名字的存在形式如下
#tablename__________
'_Y
y["tQ7S5wn0
51Testing软件测试网 `5G4U){,p6r6A[
收藏
举报
TAG: