=ROUND函数(ROUND函数(RAND()*26-8,10),0)

在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.89558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数。那就看下面的两种随机取整数的方法:1、A:select
floor(rand()*N)
---生成的数是这样的:12.0
B:select cast( floor(rand()*N) as int)
---生成的数是这样的:12
2、A:select ceiling(rand() * N)
---生成的数是这样的:12.0
B:select cast(ceiling(rand() * N) as int)
---生成的数是这样的:12
其中里面的N是一个你指定的整数,如100,可以看出,两种方法的A方法是带有.0这个的小数的,而B方法就是真正的整数了。
大致一看,这两种方法没什么区别,真的没区别?其实是有一点的,那就是他们的生成随机数的范围:方法1的数字范围:0至N-1之间,如cast(floor(rand()*100) as int)就会生成0至99之间任一整数方法2的数字范围:1至N之间,如cast(ceiling(rand() * 100) as int)就会生成1至100之间任一整数对于这个区别,看SQL的联机帮助就知了:------------------------------------------------------------------------------------
比较 CEILING 和 FLOORCEILING 函数返回大于或等于所给数字表达式的最小整数。FLOOR 函数返回小于或等于所给数字表达式的最大整数。例如,对于数字表达式 12.9273,CEILING 将返回 13,FLOOR 将返回 12。FLOOR 和 CEILING 返回值的数据类型都与输入的数字表达式的数据类型相同。----------------------------------------------------------------------------------现在,各位就可以根据自己需要使用这两种方法来取得随机数了^_^
另外,还要提示一下各位菜鸟,关于随机取得表中任意N条记录的方法,很简单,就用newid():select top N *
from table_name order by newid() ----N是一个你指定的整数,表是取得记录的条数
ROUND() 函数ROUND 函数用于把数值字段舍入为指定的小数位数。SQL ROUND() 语法SELECT ROUND(column_name,decimals) FROM table_name
参数 描述column_name 必需。要舍入的字段。decimals 必需。规定要返回的小数位数。
select ROUND(15.258, 1) &结果是:15.300
可以利用ROUND() 函数与RAND()函数来随机生成指定区间:
DECLARE @Result INT
DECLARE @Upper INT
DECLARE @Lower INT
SET @Lower = 1
SET @Upper = 10
SELECT @Result = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Result
以上代码得到一个[@Lower,@Upper)区间内的数,即最小是@Lower,最大是@Upper-1之间的随机数。
结合以上知识,写一个自动生成订单及配货清单的存储过程:
1 USE [KaiFanDB]
4 /****** Object:
StoredProcedure [dbo].[ProcAutoGenerationOfOrders]
Script Date:
13:42:51 ******/
5 DROP PROCEDURE [dbo].[ProcAutoGenerationOfOrders]
8 /****** Object:
StoredProcedure [dbo].[ProcAutoGenerationOfOrders]
Script Date:
13:42:51 ******/
9 SET ANSI_NULLS ON
12 SET QUOTED_IDENTIFIER ON
17 -- =============================================
18 -- Author:
19 -- Create date: &&
20 -- Description:
&自动生成订单&
21 -- =============================================
22 CREATE PROCEDURE [dbo].[ProcAutoGenerationOfOrders]
-- Add the parameters for the stored procedure here
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
31 declare @num int;
32 set @num=5;
33 while(@num&0)
print('@num='+ CONVERT(VARCHAR,@num));
/* 生成订单开始 */
declare @oid char(14);
set @oid=CONVERT(VARCHAR,GETDATE(),112)+ CONVERT(VARCHAR,ROUND(((1000000 - 100000 -1) * RAND() + 100000), 0)); --生成14位纯数字订单号,例如&66&
if(exists(select * from [dbo].[Order] where [OID]=@oid))
print ('@oid='+CONVERT(VARCHAR,@oid)+N',订单号已存在则跳过');
print ('@oid='+CONVERT(VARCHAR,@oid)+N',订单号不存在则写入');
declare @uid int;
select top(1) @uid=UI.[UID] from [dbo].[Userinfo] as UI inner join [dbo].[UserAddress] as UA on UA.[UID]=UI.[UID]
where UI.[UID] not in (select top(10) [buyerUID] from [dbo].[Order] order by [AddTime] desc) --买家用户离散
order by NEWID(); --随机抽取数据
declare @bid int;
select top(1) @bid=[BID] from [dbo].[Businesses]
where [StatusCode]=1 and [StatusCode]=1
and [BID] in (select distinct [BID] from [dbo].[Food])
and [BID] not in (select top(2) [sellerBID] from [dbo].[Order] order by [AddTime] desc) --卖家店铺离散
order by NEWID(); --随机抽取数据
declare @totalprice int;
set @totalprice=0;
declare @time datetime;
set @time=DATEADD(MI, -cast(floor(rand() * 30) as int), GETDATE());
--生成早于[1-30)分钟之间的时间,时间分散开使得订单更逼真
begin transaction;
--开始事务
declare @tran_error int;
--定义变量,累积事务执行过程中的错误
set @tran_error = 0;
print (N'开始事务');
/* 写入订单开始 */
declare @buyerName nvarchar(10),@buyerContactWay nvarchar(20),@buyerAddress nvarchar(50),@Sex tinyint,@Description nvarchar(50),@NeedTime nvarchar(20);
select top(1) @buyerName=[ContactName],@buyerContactWay=[MobilePhone],@buyerAddress=([Address]+ CONVERT(NVARCHAR,[House])),@Sex=[Sex] from [dbo].[UserAddress] where [UID]=@uid order by [isDefault] desc;
set @Description= null
set @NeedTime=N'尽快送达';
declare @sellerName nvarchar(10),@sellerContactWay nvarchar(20),@sellerAddress nvarchar(50),@sellerDescription nvarchar(50);
select top(1) @sellerName=[NickName],@sellerContactWay=(CONVERT(NVARCHAR,[Telephone])+CONVERT(NVARCHAR,[MobilePhone])),@sellerAddress=[Address],@sellerDescription=[ShortDescription] from [dbo].[Businesses] where [BID]=@bid order by [AddTime] desc;
INSERT INTO [dbo].[Order] VALUES(@oid
,@uid,@buyerName,@buyerContactWay,@buyerAddress,@Description,@NeedTime
,@bid,@sellerName,@sellerContactWay,@sellerAddress,@sellerDescription
,@sellerName,@totalprice,1,@totalprice
,null,null,1,0,null,@time,@Sex,0,0,null); --插入订单清单
----- 执行语句
set @tran_error = @tran_error + @@error;
--累积错误
print (N'写入订单结束');
/* 写入订单结束 */
if(@tran_error & 1)
/* 写入订单清单开始 */
declare @foodnumber int;
set @foodnumber=cast(ceiling(rand() * 5) as int);
--生成[1-5]之间的随机数
print (N'需要写入 '+CONVERT(VARCHAR,@foodnumber)+N' 条订单清单');
while(@foodnumber&0)
declare @fid int;
declare @funitprice int;
declare @fname nvarchar(12);
select top(1) @fid=[FID],@fname=[Name],@funitprice=[UnitPrice] from [dbo].[Food] where [BID]=@bid order by NEWID(); --随机抽取数据
declare @fcategoryname nvarchar(10);
select top(1) @fcategoryname=FC.[CategoryName] from
[dbo].[FoodCategoryRelation] as FCR
inner join [dbo].[FoodCategory] as FC on FC.[FCID]=FCR.[FCID]
where FCR.[FID]=@fid;
INSERT INTO [dbo].[OrderBill] VALUES(@oid,@fid,@fname,@funitprice,@fcategoryname,1,GETDATE()); --插入订单清单
----- 执行语句
set @tran_error = @tran_error + @@error;
--累积错误
set @totalprice=@totalprice + (@funitprice * 1);
print (N'写入一条订单清单完成,@foodnumber='+CONVERT(NVARCHAR,@foodnumber)+ N',@totalprice='+CONVERT(NVARCHAR,@totalprice));
set @foodnumber=@foodnumber-1;
print (N'写入订单清单结束,@foodnumber='+CONVERT(NVARCHAR,@foodnumber)+ N',@totalprice='+CONVERT(NVARCHAR,@totalprice));
/* 写入订单清单结束 */
if(@totalprice&0)
update [dbo].[Order] set [TotalPrice]=@totalprice,[PayPrice]=@totalprice,[PayMethod]=1,[PayTime]=null,[OrderStatus]=1 where [OID]=@oid;
----- 执行语句
set @tran_error = @tran_error + @@error;
--累积错误
print (N'修改订单结束');
--判断要回滚或提交事物
if(@tran_error && 0)
136     
print (N'回滚事务');
transaction;
141     
print (N'提交事务');
commit transaction;
set @num=@num-1;
/* 生成订单结束 */
阅读(...) 评论()当前位置: >>
Excel呕心沥血之经典篇
LOGO 目录?1.函数IF ?2.函数VLOOKUP ?3.函数OR ?4.函数AND ?5.函数RAND ?6.函数ROUND ?7.函数LEN ?8.函数MID ?9.函数AVERAGE ?10.公式常用错误及解决办法 1. 函数IF? 函数名称:IF? 主要功能:根据对指定条件的逻辑判断的
真假结果,返回相对 应的内容.? 使用格式:=IF(Logical_test,Value_if_true,Value_if_false)? 参数说明: Logical_test代表逻辑判断表达式 ;value_if_true是Logical_test为TRUE时函数的返回值。 value_if_true可以是一个表达式;value_if_false是Logical_test为FALSE时函数的返回 值,value_if_false也可以是一个表达式。 ?应用举例: 1.在B2单元格中输入公式: =IF(A2&=26,TRUE,FALSE),确认后,B2 单元格中显示&TRUE&. 2.在B3单元格中输入公式: =IF(A3&=26,,“错误&),确认后,B3单元格 中显示“0&. 3.在B4单元格中输入公式: =IF(A4&=26, “错误&),确认后,B4单元格 中显示“FALSE&. 4.在B5单元格中输入公式: =IF(A5&=26, “CW“,),确认后,B5单元格 中显示“0&. 5.在B6单元格中输入公式: =IF(A6&20,IF(LEN(A6)&4,IF(LEN(A6)=3,& 三位数&,&两位数&),&数值偏大&),&数值偏小&), 确认后, B6单元格中显 示“数值偏小&. 2.函数Vlookup? 函数名称:VLOOKUP? 主要功能:在数据表的首列查找指定的数值,并由此返回数据 表当前行中指定列处的数值.? 使用格式: =VLOOKUP(lookup_value,table_array,col_index_num,ra nge_lookup) ? 参数说明:lookup_value代表需要查找的数值 table_array代表需要在其中查找数据的单元格区域 col_index_num为在table_array区域中待返回的匹配值的列 序号,当col_index_num为2时,返回table_array第2列中的数 2.函数vlookup值,为3 时,返回第3列中的数值,......range_lookup为一逻辑值,如果为TRUE或省略,则返回近似 匹配值,也就是说如果找不到精确匹配值,则返回小于 lookup_value的最大数值,如果为FALSE,则返回精确匹配值, 如果找不到,则返回错误值#N/A ? 应用举例: 1.在C4单元格中输入公式: =VLOOKUP(D3,A2:B6,2,FALSE), 在D3单元格中输入C确认后, C4 单元格中显示“13&. 2.在C4单元格中输入公式: 2.函数vlookup=VLOOKUP(D3,A2:B6,2),在D3单 元格中输入F确认后, C4单元格 中显示“15&. 3.在C4单元格中输入公式: =VLOOKUP(D3,A2:B6,2,FALSE), 在D3单元格中输入F确认后, C4 单元格中显示“#N/A&.**注意:文本不区分大小写** 3. 函数OR? 函数名称:OR ? 主要功能:返回逻辑值,仅当所有参数值均为逻辑&假 (FALSE)&时返回函数结果逻辑&假(FALSE)&,否则都返回逻 辑&真(TURE)&. ? 使用格式:OR(logical1,logical2, ...) ? 参数说明:Logical1,Logical2,Logical3……:表示待测试的 条件式或表达式,最多达30个. ? 应用举例:如果A1=6、A2=8,则公式“=OR(A1+A2&A2,A1=A2)” 返回TRUE;而公式“=OR(A1&A2,A1=A2)”返回FALSE。 4. 函数 AND? 函数名称: AND? 主要功能:所有参数的逻辑值为真时返回TRUE(真);只 要有一个参数的逻辑值为假,则返回FALSE(假)。? 使用格式: AND (logical1,logical2, ...) ? 参数说明:Logical1,Logical2,Logical3……:表示待测试 的条件式或表达式,最多达30个. ? 应用举例:在C5单元格输入公式:=AND(A2&=60,B2&=60),确认.如果C2中返 回TRUE,说明A2和B2中的数值均大于等于60,如果返回FALSE, 说明A2和B2中的数值至少有一个小于60. 5. 函数RAND? 函数名称: RAND ? 主要功能:返回一个大于等于0小于1的随机数,每次计算工作 表(按F9键)将返回一个新的数值。 ? 使用格式: RAND () ? 参数:不需要? 注意:如果要生成a,b之间的随机实数,可以使用公式 “=RAND()*(b-a)+a”。如果在某一单元格内应用公式 “=RAND()”,然后在编辑状态下按住F9键,将会产生一个变 化的随机数。? 应用举例: 公式“=RAND()*1000”返回一个大于等于0、小于1000的随机数 6. 函数ROUND? 函数名称: ROUND ? 主要功能:按指定位数四舍五入某个数字 。 ? 使用格式: ROUND(number,num_digits) ? 参数:Number是需要四舍五入的数字;Num_digits为指定的位 数,Number按此位数进行处理。 ? 注意:如果num_digits大于0,则四舍五入到指定的小数位;如 果num_digits等于0,则四舍五入到最接近的整数;如果 num_digits小于0,则在小数点左侧按指定位数四舍五入。 ? 应用举例: 如果A1=65.25,则公式“=ROUND(A1,1)”返回 65.3;=ROUND(82.149,2)返回82.15;=ROUND(21.5,-1)返 回20 7. 函数 LEN? 函数名称:LEN ? 主要功能:统计文本字符串中字符数目. ? 使用格式:LEN(text) ? 参数说明:text表示要统计的文本字符串. ? 应用举例:如果A2中为“asdsf”,在B2单元格中输入公 式:=LEN(B2),确认后即显示出统计结果“5& 8. 函数MID? 函数名称: MID ? 主要功能:从一个文本字符串的指定位置开始,截取指定 数目的字符. ? 使用格式:MID(text,start_num,num_chars) ? 参数说明:text代表一个文本字符串,start_num代表指定 的起始位置,num_chars表示要截取的数目 . ? 应用举例: 如下图,在B1单元格中输入公式:=MID(A1,4,2),确认后, 即可显示出&30& 9. 函数AVERAGE? 函数名称: AVERAGE ? 主要功能:求出所有参数的算术平均值 ? 使用格式:AVERAGE:(number1,number2,……) ? 参数说明:number1,number2,……:需要求平均值的数 值或引用单元格(区域),参数不超过30个. ? 应用举例: 在B8单元格中输入公 式:=AVERAGE(B7:D7,F7:H7,7,8),确认后,即可求出B7 至D7区域,F7至H7区域中的数值和7,8的平均值 . 10. 公式常见错误及解决办法?? ??经常用Excel可能都会遇到一些错误值信息,如:# N/A!、#VALUE!、#DIV/O! 等等,出现这些错误的原因有很多种,如果公式不能计算正确结果,Excel将显示 一个错误值,例如,在需要数字的公式中使用文本、删除了被公式引用的单元格, 或者使用了宽度不足以显示结果的单元格。以下是几种常见的错误及其解决方法。 (1)#####! 原因:如果单元格所含的数字、日期或时间比单元格宽,或者单元格的日期时间 公式产生了一个负值,就会产生#####!错误。 解决方法:如果单元格所含的数字、日期或时间比单元格宽,可以通过拖动列表 之间的宽度来修改列宽。如果使用的是1900年的日期系统,那么Excel中的日期 和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导 致#####!错误。如果公式正确,也可以将单元格的格式改为非日期和时间型来 显示该值。 10. 公式常见错误及解决办法(2)#VALUE! 当使用错误的参数或运算对象类型时,或者当公式自动更正功能不能更正 公式时,将产生错误值#VALUE!。 原因一:在需要数字或逻辑值时输入了文本,Excel不能将文本转换为正 确的数据类型。 解决方法:确认公式或函数所需的运算符或参数正确,并且公式引用的单 元格中包含有效的数值。例如:如果单元格A1包含一个数字,单元格A2 包含文本&学籍&,则公式&=A1+A2&将返回错误值#VALUE!。可以用SUM 工作表函数将这两个值相加(SUM函数忽略文本):=SUM(A1:A2)。 原因二:将单元格引用、公式或函数作为数组常量输入。 解决方法:确认数组常量不是单元格引用、公式或函数。 原因三:赋予需要单一数值的运算符或函数一个数值区域。 解决方法:将数值区域改为单一数值。修改数值区域,使其包含公式所在 的数据行或列。 10. 公式常见错误及解决办法(3)#DIV/O! 当公式被零除时,将会产生错误值#DIV/O!。 原因一:在公式中,除数使用了指向空单元格或包含零值单元格的单元格 引用(在Excel中如果运算对象是空白单元格,Excel将此空值当作零值)。 解决方法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。 原因二:输入的公式中包含明显的除数零,例如:=5/0。 解决方法:将零改为非零值。 10. 公式常见错误及解决办法 (4)#NAME?在公式中使用了Excel不能识别的文本时将产生错误值#NAME?。 原因一:删除了公式中使用的名称,或者使用了不存在的名称。 解决方法:确认使用的名称确实存在。选择菜单&插入&|&名称&|&定义&命令,如 果所需名称没有被列出,请使用&定义&命令添加相应的名称。 原因二:名称的拼写错误。 解决方法:修改拼写错误的名称。 原因三:在公式中使用标志。 解决方法:选择菜单中&工具&|&选项&命令,打开&选项&对话框,然后单击&重新 计算&标签,在&工作薄选项&下,选中&接受公式标志&复选框。 原因四:在公式中输入文本时没有使用双引号。 解决方法:Excel将其解释为名称,而不理会用户准备将其用作文本的想法, 将公式中的文本括在双引号中。例如:下面的公式将一段文本&总计:&和单元 格B50中的数值合并在一起:=&总计:&&B50 原因五:在区域的引用中缺少冒号。 解决方法:确认公式中,使用的所有区域引用都使用冒号。例如:SUM (A2:B34)。 10. 公式常见错误及解决办法(5)#N/A 原因:当在函数或公式中没有可用数值时,将产生错误值#N/A。 解决方法:如果工作表中某些单元格暂时没有数值,请在这些单元格中 输入&#N/A&,公式在引用这些单元格时,将不进行数值计算,而是返回 #N/A。 (6)#REF! 当单元格引用无效时将产生错误值#REF!。 原因:删除了由其他公式引用的单元格,或将移动单元格粘贴到由其他 公式引用的单元格中。 解决方法:更改公式或者在删除或粘贴单元格之后,立即单击&撤消&按钮, 以恢复工作表中的单元格。 10. 公式常见错误及解决办法(7)#NUM! 当公式或函数中某个数字有问题时将产生错误值#NUM!。 原因一:在需要数字参数的函数中使用了不能接受的参数。 解决方法:确认函数中使用的参数类型正确无误。 原因二:使用了迭代计算的工作表函数,例如:IRR或RATE,并且函数不能 产生有效的结果。 解决方法:为工作表函数使用不同的初始值。 原因三:由公式产生的数字太大或太小,Excel不能表示。 解决方法:修改公式,使其结果在有效数字范围之间。 (8)#NULL! 当试图为两个并不相交的区域指定交叉点时将产生错误值#NULL!。 原因:使用了不正确的区域运算符或不正确的单元格引用。 解决方法:如果要引用两个不相交的区域,请使用联合运算符逗号(,)。公 式要对两个区域求和,请确认在引用这两个区域时,使用逗号。如:SUM (A1:A13,D12:D23)。如果没有使用逗号,Excel将试图对同时属于两个区 域的单元格求和,但是由于A1:A13和D12:D23并不相交,所以他们没有共同 的单元格。
EXCEL函数经典使用_计算机软件及应用_IT/计算机_专业资料。【精品】EXCEL 使用技巧(部分收集、部分原创)申请 加精 后边有宏的制作,应有,导出,和加载宏的方法。本...68页 免费 EXCEL函数的使用 81页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 excel经典常用函数 excel经典常用函...Excel免费经典视频教程下载(不需要再另找教程)_计算机软件及应用_IT/计算机_专业资料。提供最实用最全excel视频教程下载 Excel 免费经典视频教程下载(不需要再另找...EXCEL经典用法大全_IT/计算机_专业资料。EXCEL 经典用法大全 01、如何在已有的单元格中批量加入一段固定字符? 例如:在单位的人事资料,在 excel 中输入后,由于上级...Excel经典实用操作技巧35招,用Excel更轻松。Excel经典实用操作技巧35招,用Excel更轻松。隐藏&& Excel 经典实用操作技巧 35 招(图文完美版 图文完美版) 图文完美版...Exce技巧大全,excel经典教程,超全,免费,精编_计算机软件及应用_IT/计算机_专业资料。excelexcelexcel!重新排版后看着超清爽,完全免费,超全。...excel图表的经典配色_计算机软件及应用_IT/计算机_专业资料。Excel图表的经典配色,参考了世界著名杂志的配色 商业杂志图表的经典用色商业图表中的颜色运用,其重要性不...Excel表格的25招经典功能技巧_IT/计算机_专业资料。Excel 表格的 25 招必学秘技也许你已经在 Excel 中完成过上百张财务报表,也许你已利用 Excel 函数实 现过上...Excel使用技巧大全经典完整版(超全)_IT/计算机_专业资料。百度文库十大经典文档表格Office办公宝典,经典学习秘籍,秘技+实例+简单易学=轻松高效短时掌握, 高手之路必备...EXCEL函数部分 39页 免费 Excel中的函数 49页 2财富值 EXCEL函数篇 29页 5财富...这次改版之后,感觉50个财富都嫌少,此文档增删5次,耗时半月,呕心沥血之作,望...
All rights reserved Powered by
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 ROUND函数 的文章

 

随机推荐