<html>
<head>
<title>第十章使用行函数</title>
</head>
<body bgcolor=lightgray>
<p align=center><font color=red size=7 face=黑体>第十章 使用行函数</font></p>
<br>
<p align=center><font color=red size=4><strong>第一节 其它行函数</strong></font></p>
<p><font size=4>currentuser:当前会话使用的用户ID的名字</font></p>
<p align=center><font size=4 color=green><u>currentuser()=`Admin`</u></font></p>
<p><font size=4>now() date() time() 指当前的日期和时间</font></p>
<p><font size=4 color=green>now()=`12-20-1999 10:30:25 am`</font></p>
<p><font size=4 color=blue>date()=`12-20-1999`</font></p>
<p><font size=4>time()=`10:30:25 am`</font></p>
<p><font size=4>nz:将null转换为其他的值</font></p>
<p><font size=4 color=green>nz(a,o)=0 if a is null</font></p>
<p><font size=4 color=green>nz(a,0)=a if a is not null</font></p>
<p><font size=4>cstr:将数字或者日期转化成字符串(文本)</font></p>
<p><font size=4 color=green>cstr(7)=`7`</font></p>
<p><font size=4>cdate:将数字或者字符串更改为日期</font></p>
<p><font size=4>cdate(1)=#12/31/1899#</font></p>
<p><font size=4>cdate(`jan 18,2010`)=#1/18/2010#</font></p>
<p><font size=4>cint/cdbl:将字符串转化为数字</font></p>
<br>
<p align=center><font size=4 color=red>第二节 使用函数识别用户和日期</font></p>
<p><font size=4>select currentuser() as user,</font></p>
<p><font size=4>now() as date_time</font></p>
<p><font size=4>from dual;</font></p>
<p align=center><font size=4 color=red>第三节使用函数将null更改为其他值</font></p>
<p><font size=4>在Access中,nz函数总是将列的数据类型更改为文本数据类型。所有数据都将被替换成文本。</font></p>
<p><font size=4>select pkey,(主键)</font></p>
<p><font size=4>nz(num_col,`no number`) as num_col2,</font></p>
<p><font size=4>nz(text_col,`no text`) as text_col2,</font></p>
<p><font size=4>nz(date_col,`no date`)as date_col2</font></p>
<p><font size=4>from sec1003;</font></p>
<font size="4">
<p align="center"><font color="#FF0000" size="4">在第四节,使用函数更改数据类型 </font></p>
<p><font size="4">为了转换数据类型,我们使用cint函数将文本数据类型转换成整数数据类型。</font></p>
<p><font size="4"><strong>任务:显示数据类型自动转换的效果,在文本数据类型列中的数字上进行算术运算。</strong></font></p>
<p><font size="4">selecct pkey,</font></p>
<p><font size="4"> text_1,</font></p>
<p><font size="4">text_2,</font></p>
<p><font size="4">cint(text_)+cint(text_2) as text_add </font></p>
<p><font size="4">from sec1004;</font></p>
<p align="center"><font color="#FF0000" size="4"> 第五节在Access中使用表达式生成器作为参考文档来告诉我哪些行函数可用。</font></p>
<p><font size="4"> 创建数字和日期格式</font></p>
<p align="center"><font color="#FF0000" size="4"> 第七节 创建一个简单的数字模式
</font></p>
<p><font size="4">原表是numbers_0_to_99表。100个数字啼以应付当前的问题了。
</font></p>
<p><font size="4"><strong>任务:列出50到250之间所有3的倍数的数字。</strong></font></p>
<p><font size="4"> 为了获得3的倍数需要将表中的所有数据都乘以3.要想获得其它方式,可能需要将表中的数字乘以任意数字M,然后还要以加上一个数字A。</font></p>
<p><font size="4"> 第一步:
</font></p>
<p><font size="4">select n,
</font></p>
<p><font size="4">3*n as multiple_of_3
</font></p>
<p><font size="4">from numbers_0_to_99;</font></p>
<p><font size="4"> 保存查询,并将它命名为secl007.</font></p>
<p><font size="4"> 第二步:
</font></p>
<p><font size="4">select multiple_of_3
</font></p>
<p><font size="4">from sec1007
</font></p>
<p><font size="4">where multiple_of_3 between 50 and 250</font></p>
<p><font size="4"> order by multiple_of_3;
</font></p>
<p align="center"><font color="#FF0000" size="4">第八节 创建复杂的数字模式
</font></p>
<p><font size="4"><strong>素数是最的序列
</strong></font></p>
<p><strong><font color="#FF0000" size="4">任务:列出大于10并且小于100的素数</font></strong></p>
<p><font size="4"> select n as prime_number
</font></p>
<p><font size="4">from numbers_0_to_99
</font></p>
<p><font size="4">where n>10
</font></p>
<p><font size="4">and not((n mod 2)=0)</font></p>
<p><font size="4"> and not((n mod 3)=0)
</font></p>
<p><font size="4">and not((n mod 5)=0)</font></p>
<p><font size="4"> and not((n mod 7)=0)</font></p>
<p><font size="4"> order by n;
</font></p>
<p> </p>
<p align="center"><font color="#FF0000" size="4">第九节 解代数方程的一个简单方法:</font></p>
<p><font size="4"> <strong>查找以下方程式的解"x4-91x3+66x2-451x-5913=0找出0到99之间的解。如果有一个解的话,将这个解精确到两位小数</strong>。
</font></p>
<p><font size="4">第一步:</font><font size="4">计算0到99之间的函数值
</font></p>
<p><font size="4">select n,</font></p>
<p><font size="4"> (n*n*n*n-91*n*n*n+66*n*n-451*n-5913)
as value_of_function
</font></p>
<p><font size="4">from numbers_0_to_99</font></p>
<p><font size="4"> order by n;</font></p>
<p><font size="4"> 结论:在90到91之间有一个解</font></p>
<p><font size="4"> 第二步生成90.00到90.99之间的数字</font></p>
<p><font size="4"> select 90+(n/100) as m</font></p>
<p><font size="4"> from numbers0to99;
</font></p>
<p><font size="4">保存这个查询,命名sec1009
</font></p>
<p><font size="4">第三步:</font></p>
<p><font size="4"> select m,
</font></p>
<p><font size="4">(m*m*m*m-91*m*m*m+66*m*m-451*m-5913)
as value_of_function
</font></p>
<p><font size="4">from sec1009
</font></p>
<p><font size="4">order by(m*100);</font></p>
<p align="center"><font color="#FF0000" size="4"> 第十节 列出一个星期的所有星期数</font></p>
<p><font size="4"> <strong>任务:列出从2010年2月24日开始的一个星期中的所有天数。 </strong></font></p>
<p><font size="4">第一步:创建一个常数表
</font></p>
<p><font size="4">drop table sec1010_constants
</font></p>
<p><font size="4">create table sec1010_constants
(begin_date datetime);</font></p>
<p><font size="4"> insert into sec1010_constants
</font></p>
<p><font size="4">values(#24-feb-2010#);</font></p>
<p><font size="4"> 第二步 创建一个包含七个日期的视图
</font></p>
<p><font size="4">select begin_date+digit as days
</font></p>
<p><font size="4">from numbers_0_to_99,</font></p>
<p><font size="4"> sec1010_constants</font></p>
<p><font size="4"> where digit<7;
</font></p>
<p><font size="4">保存为sec1010
</font></p>
<p><font size="4">第三步:列出三种格式化的日期</font></p>
<p><font size="4"> select days,</font></p>
<p><font size="4">format(days,`ddd`) as abbreviated_day,</font></p>
<p><font size="4"> format(days,`dddd`)as full_day
</font></p>
<p><font size="4">from sec1010
</font></p>
<p><font size="4">order by days;
</font></p>
<p align="center"><font color="#FF0000" size="4">第十一节 创建一个工作日历</font></p>
<p><font size="4"> <strong>任务:创建一个显示2015年3月,4月和5月内工作日,,(从星期一到星期五)的日历。在一个列中显示工作日的星期数,并在下一个列中列出日期在星期之间留一个空行。</strong></font></p>
<p><font size="4"> 第一步:创建一个常数表
</font></p>
<p><font size="4">drop table sec1011_boundaries;</font></p>
<p><font size="4"> create table sec1011_boundaries
(start_date datetime,
end_date datetime);
</font></p>
<p><font size="4">insert into sec1011_boundaries
</font></p>
<p><font size="4">values(#01-mar-2015#,#01-jun-2015#);</font></p>
<p><font size="4"> 第二步:创建一个包含所有连续天数的表</font></p>
<p><font size="4"> select n,</font></p>
<p><font size="4"> cdate(start_date+n)as date_1</font></p>
<p><font size="4"> into sec1011_calendar
</font></p>
<p><font size="4">from numbers_0_to_99
</font></p>
<p><font size="4">sect1011_boundaries</font></p>
<p><font size="4"> where start_date+n <= 最后的日期;</font></p>
<p><font size="4"> 第三步:
</font></p>
<p><font size="4">delete from sec1011_calendar</font></p>
<p><font size="4"> where format(date_1,`ddd`)=`sun`;
</font></p>
<p><font size="4">update sec1011_calendar
</font></p>
<p><font size="4">set date_1=NULL</font></p>
<p><font size="4"> where format(date_1,`ddd`)=`sat`;</font></p>
<p><font size="4"> 第四步:
select format(date_1,`dddd`)as dayoftheweek</font></p>
<p><font size="4"> format(date_1,`mm/dd/yyyy`)as work_day </font></p>
<p><font size="4">from sec1011calendar
</font></p>
<p><font size="4">order by n;
</font></p>
<p align="center"><font color="#FF0000" size="4">第十二节 计算从出生到现在的天数
</font></p>
<p><font size="4">select now()-#21-mar-1978#as days_old
from dual;</font></p>
<p align="center"><font color="#FF0000" size="4"> 第十三节找出出生后满10000天的天数
</font></p>
<p><font size="4">select#21-mar-1978#+10000 as celebration_day
from dual; </font></p>
<hr align=left color=red size=3 width=80% noshade>
<a href="首页.html" title="使用行函数"><font color=green size=7 face=黑体><strong><u>返回首页</u></strong></font></a>
</body>
</html>
SQL技术第十章使用行函数
最新推荐文章于 2025-03-28 16:46:23 发布