当前位置:
文档之家› 《数据库原理及应用》第六章函数与表达式
《数据库原理及应用》第六章函数与表达式
12.3 124 124
5.2.3 表达式
• 表达式是由运算符和括号将运算对象连接 起来的式子。常量和函数可以看成是最简 单的表达式。 • 通常根据运算符的不同,将表达式分为算 术表达式、字符表达式、关系表达式和逻 辑表达式。
1.算术表达式
• 算术表达式是由算术运算符和数值型常量、数值型对象标识 符、返回值为数值型数据的函数组成。它的运算结果仍为数 值型数据。
ACCESS函数与表达式
5.2 表达式
• 在Access中,表达式广泛地应用于表、查 询、窗体、报表、宏和事件过程等。表达 式由运算对象、运算符和括号组成,运算 对象包括常量、函数和对象标识符。 Access中的对象标识符可以是数据表中的 字段名称、窗体、报表名称、控件名称、 属性名称等。
5.2.1 常量
• 常量分为系统常量和用户自定义常量,系 统常量如逻辑值True(真值)、False(假 值)和Null(空值)。注意:空值不是空格 或空字符串,也不是0,而是表示没有值。 用户自定义常量又常称为字面值,如数值 “100”、字符串“ABCD”和日期 “#08/8/8#”等。 • Access的常量类型包括数值型、字符型、 日期型和逻辑型。
• 系统提供了上百个的函数以供用户使用。 在Access使用过程中,函数名称不区分大 小写。根据函数的数据类型,我们将常用 函数分为:数学型、文本型、日期时间型、 逻辑型和转换函数等。本节,我们将对一 部分常用函数进行介绍,如果需要更多的 函数,请查阅帮助或系统手册。
1. 数学函数
函数 Abs( ) Exp( ) Int( ) 求绝对数 e指数 自变量为正时,返回整数部分;自变 量为负时,返回不大于原值的整数 功能 示例 Abs(-12.5 ) Exp(2.5 ) Ins( 8.7) Ins( -8.4) 12.5 12.1825 8 -9 函数值
2.字符函数
函数 功能 示例 函数值
Trim(c)
rtrim(c) ltrim(c)
删除字符串首尾空格函数
删除字符串尾部空格函数 删除字符串首部空格函数
trim(“ AA”+“ BB ”) “AA BB”
rtrim(“ 数据库 ”) ltrim(“ 数据库 ”) “ 数据库” “数据库 ”
string(n,c) 字符重复函数。将字符串
函数值为两个日期相差的周 DateDiff("w",#2008-07数(满7天为一周),当相差 22#,#2009-05-08#) DateDiff("w",#2008-07不足7天时,返回0 22#,#2008-07-26#)
4.转换函数
函数 功能 示例 函数值 65 "B" Asc(stringex 返回字符串第一个字符的ASCII码 Asc("ABC") pr) Chr(charcod 返回ASCII码对应的字符 e) Chr(66)
+ 、-
加、减
注 意
• 在进行算术运算时,要根据运算符的优先级来进 行。算术运算符的优先级顺序如下:先括号,在 同一括号内,单目运算的优先级最高,然后先幂, 再乘除,再模运算,后加减。 • 在算术表达式中,当“+”运算符的两侧的数据类 型不一致时,一侧是数值型数据,一侧是数值字 符串时,完成的是算术运算,当两侧均为数值符 号串时,完成的是连接运算而不是算术运算。即 连接运算只有当“+”运算符的两侧都是字符表达 式时才能进行。
1.数值型
• 数值型常量包括整数和实数。整数如123; 实数,用来表示包含小数的数或超过整数 示数范围的数,实数既可通过定点数来表 示,也可用科学计数法进行表示。实数如 12.3或0.123E2。
2.文本型
• 文本型常量由字母、汉字和数字等符号构 成的字符串。定义字符常量时需要使用定 界符,Access中字符定界符有两种形式: 单引号(' ')、双引号(" ")。如字符串 'ABC'或"ABC"。
Fix( )
Log( ) Rnd( ) Sgn( )
无论自变量为正或负,均舍去小数部分, Fix(8.7 ) Fix(-8.4) 返回整数
自然对数 产生0~1之间的随机数,自变量可缺省 符号函数。当自变量的值为正时,返 回1;自变量的值为0时,返回0;当 自变量的值为负时,返回-1 平方根。自变量非负 四舍五入函数。第二个参数的取值为非 负整数,用于确定所保留的小数位 数 Log( 3.5) Rnd( 2) Sgn( 5) Sgn(0) Sgn(-5.6) Sqr( 6)
Day(dateexpr) Month(dateexpr) Year(dateexpr) Weekday(dateexpr)
求星期函数。返回日期表达式中的这一天 Weekday(date()) 4 是一周中的第几天。函数值取值范围是1~7, 系统默认星期日是一周中的第1天 求小时函数。返回时间表达式中的小时值 求分钟函数。返回时间表达式中的分钟值 求秒函数。返回时间表达式中的秒值 求时间间隔函数。返回值为日期2减去日期 1的值。日期2大于日期1,得正值,否则得 负值。时间间隔参数的不同将确定返回值 的不同含义。具体使用参见表5-4 所示 Hour(Time()) Minute(Time()) Second(Time()) 15 33 51
4.逻辑型
• 逻辑型常量有两个值,真值和假值,用 True(或-1)表示真值,用False(或0) 表示假值。系统不区分True和False的字母 大小写。 • 注意在数据表中输入逻辑值时,如果需要 输入值,则应输入-1表示真,0表示假,不 能输入True或False。
5.2.2 Access常用函数
8 -8
1.253 0~1之间的随机数 1 0 -1 2.449
Sqr( ) Round( )
Round(12.674,0 ) 13 Round(12.674,2 ) 12.67
说明: RND(<数值表达式>)函数:产生一个0~1之间的随机数, 为单精度类型。 如果数值表达式值小于0,每次产生相同的随机数;如 果数值表达式大于0,每次产生新的随机数;如果数值表达 式等于0,产生最近生成的随机数,且生成的随机数序列相 同;如果省略数值表达式参数,则默认参数值大于0。 实际操作时,先要使用无参数的Randomize语句初始 化随机数生成器,以产生不同的随机数序列。 例:Int(100*Rnd) „产生[0,99]的随机整数 Int(101*Rnd) „产生[0,100]的随机整数 Int(100*Rnd+1) „产生[1,100]的随机整数 Int(100+200*Rnd) „产生[100,299]的随机整数 Int(100+201*Rnd) „产生[100,300]的随机整数
3.日期型
• 日期型常量即用来表示日期型数据。日期型常量 用“#”作为定界符,如2008年7月18日,表示成 常量即为#08-7-18#,也可表示为#08-07-18#。 在年月日之间的分隔符也可采用“/”作为分隔符, 即#08/7/18#或#08/07/18#。 • 对于日期型常量,年份输入为2位时,如果年份在 00~29范围内,系统默认为2000~2029年;如果 输入的年份在30~99之间,则系统默认为 1930~1999年。如果要输入的日期数据不在默认 的范围内,则应输入4位年份数据。
Str(number) 将数值转换为字符串。如果转换 结果是正数,则字符串前添加一 个空格。 Val(stringex pr)
Str(12345) Str(-1234)
" 12345 " "-12345 "
Val("12.3A") 将字符串转换为数值型数据. 转换时可自动将字符串中的空格、 Val("124d.3A") Val(“12 4d.3A”) 制表符和换行符去掉,当遇到它 不能识别为数字的第一个字符时, 停止读入字符串。
string(3,“你好”) 你你你
的第一个字符重复n次, 生成一个新字符串
3.日期时间函数
函数 Date( ) Time( ) Now( ) 功能 日期函数。返回系统当前日期。无参函数 时间函数。返回系统当前时间。无参函数 示例 Date() Time() 函数值 2008-07-22 下午 03:33:51 2008-07-22 下 午 03:33:51 19 3 2009 日期时间函数。返回系统当前日期和时间, Now() 含年、月、日、时、分、秒。无参函数 求日函数。返回日期表达式中的日值 求月份函数。返回日期表达式中的月值 求年份函数。返回日期表达式中的年值 Day(date()) Month(date()) Year(date())
Hour(timeexpr) Minute(timeexpr) Second(timeexpr) DateDiff(interval, date1,date2)
表5.4 DateDiff函数用法及示例
时间间隔 参数 yyyy q m y,d w 含义 函数值为两个日期相差的年 份 函数值为两个日期相差的季 度 函数值为两个日期相差的月 份 函数值为两个日期相差的天 数,参数y和d作用相同 示例 DateDiff("yyyy",#200807-22#,#2009-05-08#) DateDiff("q",#2008-0722#,#2009-05-08#) DateDiff("m",#2008-0722#,#2009-05-08#) DateDiff("d",#2008-0722#,#2009-05-08#) 1 3 10 290 41 0 函数值
运算符 ^ * 、/ \ Mod 功能 取负值,单目运算 幂 乘、除 取整 模运算(求余数) 表达式示例 -4^2 -4^2+-6^2 4^2 16*2/5 16*2\5 87 Mod 9 87 Mod -9 -87 Mod 9 -87 Mod -9 8+6-12 表达式值 16 52 16 6.4 6 6 6 -6 -6 2