文章 | 入侵攻击 | 安全防御 | 操作系统 | 网站建设 | 网络编程 | 路由交换 | 灾难恢复 | 新闻资讯 | 安全公告
下载 | 漏洞扫描 | 加密破解 | 入侵攻击 | 后门木马 | 溢出程序 | 综合工具 | 安全防护 | 原创发布 | 动画教程
论坛 | 黑客军火 | 配服务器 | 黑客情感 | 免费资源 | 美女贴图 | 灌水无罪 | 在线服务 | 会员照片 | 网站首页
 当前位置:主页 >> 技术文摘 >> 网络编程 >> 数据库编程 >> 文章内容  
 

 
SQL2000常用函数OR语句

www.hx99.org 阅读: 时间:2007-07-29 整理:华西黑盟
------------------------------------------------------------------
 ====================================================================
随机取不相同的数
========================================
/*
功能:随机从(1,2,3,4,5,6,7,8,9,10)取得4个不相同的数
设计:over
时间:GetDate()
*/
declare @x int
create table #temp (dd int)
set @x=1
while @x<=10
begin
        insert into #temp select @x
        set @x=@x+1
end
select * FROM #temp
select top 4 * from #temp order by newid()
drop table #temp

======================================================
NOT EXISTS的妙用
======================================================

CREATE TABLE #Temp(学号 int ,姓名 nvarchar(20),科目 nvarchar(30),成绩 float)
INSERT INTO #Temp SELECT 1,'张三',  '语文',  80
UNION SELECT 2,'李四'  ,'语文',  83
UNION SELECT 3,'王五'  ,'英语',  99
UNION SELECT 4,'李四'  ,'数学',  88
UNION SELECT 5,'张三'  ,'英语',  66
UNION SELECT 6,'王五'  ,'数学',  87
UNION SELECT 7,'李四'  ,'英语', 69
UNION SELECT 8,'张三'  ,'数学',  63
UNION SELECT 9,'王五'  ,'语文',  77

SELECT * FROM #Temp
SELECT A.* FROM #Temp  AS A WHERE NOT EXISTS (SELECT 1 FROM #Temp AS B WHERE B.科目=A.科目 AND B.成绩>A.成绩 )
DROP TABLE #Temp

==============================================================
删除当前数据库有用户表数据
==============================================================
/*
功能:删除当前数据库有用户表数据
设计:
时间:2006-05
备注:该脚本执行危险性为★★★★★,不要随意执行
*/

DECLARE @tablename varchar(50)
DECLARE @truncatesql varchar(255)
DECLARE TrCun_Cursor CURSOR FOR
select [name] from sysobjects where type = 'U'
OPEN TrCun_Cursor
FETCH TrCun_Cursor INTO @tablename
WHILE(@@fetch_status = 0)
BEGIN
        SET @truncatesql = 'truncate table ' + @tablename
        --exec(@truncatesql) --当要删除时,就去掉--
        PRINT @truncatesql
        FETCH TrCun_Cursor INTO @tablename
END
CLOSE TrCun_Cursor
DEALLOCATE TrCun_Cursor

===========================================================
返回某一表的所有字段、存储过程、函数的参数信息
===========================================================
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FN_GetObjColInfo]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[FN_GetObjColInfo]
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


/*
功能:返回某一表的所有字段、存储过程、函数的参数信息
设计:OK_008
时间:2006-05
*/
CREATE FUNCTION FN_GetObjColInfo
(@ObjName varchar(50))
RETURNS  @Return_Table TABLE(
                TName nvarchar(50),
                TypeName nvarchar(50),
                TypeLength nvarchar(50),
                Colstat        Bit
                )  
AS  
BEGIN
        INSERT  @Return_Table
                select b.name as 字段名,c.name as 字段类型,b.length/2 as 字段长度,b.colstat as 是否自动增长
                from sysobjects a
                inner join syscolumns b on a.id=b.id
                inner join systypes c on c.xusertype=b.xtype
                where a.name =@ObjName
                order by  B.ColID
        RETURN
END



GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
作者: 特蓝克斯    时间: 2006-6-20 15:34

好帖!支持一下!
作者: DVD    时间: 2006-6-20 15:49

===================================================================
日期的查询:
===================================================================
上个月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

去年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

本月的最后一天
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

本年的最后一天
SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

======================================================================
工资票面分配,计算100元到1元的各票面值张数
======================================================================
-- 工资票面分配,计算100元到1元的各票面值张数
DECLARE @SUM_SALARY MONEY
DECLARE @SUM_LEFT INT
DECLARE @V100 INT
DECLARE @V50 INT
DECLARE @V20 INT
DECLARE @V10 INT
DECLARE @V5 INT
DECLARE @V2 INT
DECLARE @V1 INT

SET @SUM_SALARY=2122995652.58

SET @SUM_LEFT=ROUND(@SUM_SALARY,0,1)
SET @V100=@SUM_LEFT/100
SET @V50=@SUM_LEFT%100/50
SET @V20=@SUM_LEFT%100%50/20
SET @V10=@SUM_LEFT%100%50%20/20
SET @V5=@SUM_LEFT%100%50%20%10/5
SET @V2=@SUM_LEFT%100%50%20%10%5/2
SET @V1=@SUM_LEFT%100%50%20%10%5%2/1

-- 测试
PRINT '100:' + cast( @V100 AS NVARCHAR(100))
PRINT ' 50:' + cast( @V50 AS NVARCHAR(100))
PRINT ' 20:' + cast( @V20 AS NVARCHAR(100))
PRINT ' 10:' + cast( @V10 AS NVARCHAR(100))
PRINT '  5:' + cast( @V5 AS NVARCHAR(100))
PRINT '  2:' + cast( @V2 AS NVARCHAR(100))
PRINT '  1:' + cast( @V1 AS NVARCHAR(100))

---以下是写成一个自定义函数:
-- 工资票面分配,计算100元到1元的各票面值张数
CREATE FUNCTION  Get_EmployeeSalaryAllot
(@SUM_SALARY MONEY ,@RKey INT )
RETURNS INT AS  
BEGIN
DECLARE @SUM_LEFT INT
DECLARE @Return INT
SET @SUM_LEFT=ROUND(@SUM_SALARY,0,1)
IF @RKey=100  
        SET @Return=@SUM_LEFT/100
ELSE IF @RKey=50
        SET @Return=@SUM_LEFT%100/50
ELSE IF @RKey=20
        SET @Return=@SUM_LEFT%100%50/20
ELSE IF @RKey=10
        SET @Return=@SUM_LEFT%100%50%20/10
ELSE IF @RKey=5
        SET @Return=@SUM_LEFT%100%50%20%10/5
ELSE IF @RKey=2
        SET @Return=@SUM_LEFT%100%50%20%10%5/2
ELSE IF @RKey=1
        SET @Return=@SUM_LEFT%100%50%20%10%5%2/1
RETURN @Return
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

======================================
今天就写这么多,下周过来再传些。
作者: yuanzhang88    时间: 2006-6-20 23:17

学习一下!谢谢!
作者: DVD    时间: 2006-6-23 17:56

原问题:
==========================================================
急,请教大家一个关于sqlserver2000中递归查询的问题
现在有一个表a,想查询某个id的本身及所有子,表数据如下:
id supid name
1 0 总经理办公室
2 1 人事部
3 1 业务部
4 3 业务部(内)
5 3 业务部(外)
6 4 张三
请问怎么用递归查询去实现,得到如下结果呢?
3 1 业务部
4 3 业务部(内)
5 3 业务部(外)
6 4 张三

还有一个问题是,这个a表还有与其他进行关联的

==========================================================
06-06-23 今天上Itput.net时,看到这就问题,后来拿来分析一下,突然想到
用临时表,也许可以解决,后面经过测试真的行。方法如下:
==========================================================

用递归,在SQL中最大层只能为32层。要是层数太多还是不要使用。

CREATE TABLE DataDepartment([id] int ,supid int,[name] nvarchar(20))
INSERT INTO DataDepartment
SELECT 1, 0 ,'总经理办公室'
UNION SELECT 2,1,'人事部'
UNION SELECT 3,1,'业务部'
UNION SELECT 4,3,'业务部(内)'
UNION SELECT 5,3,'业务部(外)'
UNION SELECT 6,4,'张三'

SELECT * FROM DataDepartment

DECLARE @id int,@i int,@Rows int
SET @id=3
CREATE TABLE #Temp([id] int ,supid int,[name] nvarchar(20))

SET @i=0
SET @Rows=0
INSERT #Temp SELECT * FROM DataDepartment AS A WHERE A.[id]=@id
WHILE @i<=@Rows
BEGIN
INSERT #Temp SELECT * FROM DataDepartment AS A WHERE EXISTS(SELECT 1 FROM #Temp AS B WHERE B.[id]=A.[supid])
AND NOT EXISTS(SELECT 1 FROM #Temp AS B WHERE B.[id]=A.[id])
SET @i=@i+1
SET @Rows =(SELECT COUNT(*) FROM #Temp )
END
SELECT * FROM #Temp
DROP TABLE DataDepartment,#Temp

结果:
3 1 业务部
4 3 业务部(内)
5 3 业务部(外)
6 4 张三
   -------------------------------------------------------------------------------------------
  上一篇:SQL server阻塞(来自微软技术支持人员)
  下一篇:sql查询语言
   -------------------------------------------------------------------------------------------
用户名:
Email:
评论内容:
 
  精品推荐
SQL2000常用函数OR语句
推荐:SQL2005开启选项的一
SQL语言入门教程:第一课
sql查询语言
MSSQL空间设置使用教程
SQL语言入门教程:第二课
妙用触发器有效的管理 MyS
SQL语言入门教程:第四课
MySQL和SQL Server,到底
MySQL数据库中关于网络安
MySQL5 入门知识
Transact_SQL小手册
SQL语言入门教程:第三课
SQL server阻塞(来自微软
建立初始的MySQL权限
ORACLE常用傻瓜問題1000問
想知道OCP证书在加拿大值
SQL Server数据库导入MySQ
MYSQL的master/slave数据
教你轻松应对JSP连接MySQL
应用事件探查器优化SQL Se
MySQL 索引浅析
MySQL安全性指南
怎样才是一个真正的DBA?
如何远程调用ACCESS数据库
关于我们 | 发展历程 | 在线投稿 | 核心监督 | 友情链接 | 网站地图 | 网站留言 | 联系我们
Copyright © 2004-2007 Www.Hx99.Net
版本:华西黑盟网站系统V5.0 Email:root#hx99.org
中国·西安·宝鸡 请使用IE6.0版本, 分辩率1024×768进行浏览
版权所有 任意抄袭 注意完整
陕ICP备06000444号