运算符与函数课前预习将手机调到静音认真做笔记及时完成作业上课要求掌握运算符的使用方法了解常用函数的功能掌握常用函数的基本使用方法学习目标学习内容运算符运算符的优先级表达式常用的函数运算符是一些符号,它们能够用来执行算术运算,字符串连接,赋值以及在字段、常量和变量之间进行比较等操作。T-SQL中的运算符包括算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符和连接运算符。运算符(1)算术运算符算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加(+)、减(-)、乘(*)、除(/)和取模(%)。例:DECLARE@AbcNUMERICSET@Abc=187/5PRINT@Abc例:DECLARE@AbcNUMERICSET@Abc=187%5PRINT@Abc(2)赋值运算符T-SQL中只有一个赋值运算符,即等号(=)。(3)比较运算符比较运算符用于比较两个表达式的大小或是否相同,其比较的结果是逻辑值,即TRUE(表示表达式的结果为真)、FALSE(表示表达式的结果为假)以及UNKNOWN。比较运算符及其含义运算符含义运算符含义大于=等于=大于等于!=,不等于小于!不大于=小于等于!不小于5030的结果值为真30/52的结果值为假(4)逻辑运算符逻辑运算符用来测试某些条件是否成立,并返回逻辑值TRUE和FALSE。运算符含义NOT对任何其他逻辑运算符的值取反AND如果两个逻辑表达式都为TRUE,则运算结果为TRUEOR如果一组的比较中任何一个为TRUE,则运算结果为TRUEBETWEEN如果操作数在某个范围之内,则运算结果为TRUEEXISTS如果子查询包含一些行,则运算结果为TRUEIN如果操作数等于表达式列表中的一个,则运算结果为TRUELIKE如果操作数与一种模式相匹配,则运算结果为TRUEALL如果一组的比较都为TRUE,则运算结果为TRUEANY如果两个逻辑表达式中的一个为TRUE,则运算结果为TRUESOME如果在一组比较中,某些为TRUE,则运算结果为TRUE(5)连接运算符T-SQL中的连接运算符“+”用于连接两个字符串,其实质就是将一个字符串加入到另一个字符串的尾部。例:定义长度为32的字符串类型变量@class和长度为10的字符串类型变量@sname,对它们赋值并输出。declare@classchar(32),@snamechar(10)set@class='信息工程系信息管理专业09级1班:'set@sname='李励'print@class+@snamedeclare@classchar(32),@snamechar(10)set@class='信息工程系信息管理专业09级1班:'set@sname='李励'print@class+@sname运算符的优先级在同一个表达式中,可能包含多个运算符,这就涉及运算的先后顺序,即优先级问题,T-SQL中运算符的优先级如下表所示:级别运算符1()(括号)2~(位非)3*(乘)、/(除)、%(取模)4+(正)、-(负)、+(加)、+(连接)、-(减)5=、、、=、=、、!=、!、!(比较运算符)6&(位与)、|(位或)、^(位异或)7NOT8AND9ALL、ANY、BETWEEN、IN、LIKE、OR、SOME(逻辑运算符)10=(赋值)计算表达式的值:Declare@nintSet@n=200+10*(20+(56-22))Print@n表达式表达式是符号和运算符的组合,可以是单个常量、变量、字段或标量函数构成的简单表达式。也可以是通过运算符连接起来的两个或更多的简单表达式组成的复杂表达式。表达式运算的数据类型由表达式中的元素决定。任务实现declare@scoreintdeclare@snamechar(12)declare@publicationdateintdeclare@autocadfloatset@score=75/2set@sname=张鹏set@publicationdate=2010.9.18set@autocad=123.66print@scoreprint@snameprint@publicationdateprint@autocaddeclare@scoreintdeclare@snamechar(12)declare@publicationdateintdeclare@autocadfloatset@score=75/2set@sname='张鹏'set@publicationdate=2010set@autocad=123.66print@scoreprint@snameprint@publicationdateprint@autocaddeclare@scoreintdeclare@snamechar(12)declare@publicationdatedatetimedeclare@autocadfloatset@score=75/2set@sname='张鹏'set@publicationdate='2010-09-18'set@autocad=123.66print@scoreprint@snameprint@publicationdateprint@autocad在“查询编辑器”窗口中输入代码,查看执行结果Print@@servernamePrint@@connectionPrint@@versionPrint@@error函数聚合函数算术函数字符串函数日期和时间函数转换函数系统函数使用函数来执行一些特殊的运算,常用的函数有:函数聚合函数聚合函数用于对一组值进行计算并返回一个数值。聚合函数经常与SELECT语句一起使用。统计函数功能描述SUM([ALL|DISTINCT]expression)计算一组数据的和MIN([ALL|DISTINCT]expression)给出一组数据的最小值MAX([ALL|DISTINCT]expression)给出一组数据的最大值COUNT({[[ALL|DISTINCT]expression]|*})计算总行数AVG([ALL|DISTINCT]expression)计算一组值的平均值算术函数算术函数用来对数值型数据进行数学运算。算术函数功能描述ABS(numeric_expression)返回表达式的绝对值(正值)CEILING(numeric_expression)返回大于或等于数值表达式值的最小整数EXP(float_expression)返回数值的指数形式FLOOR(numeric_expression)返回小于或等于数值表达式值的最大整数POWER(numeric_expression,y)返回数值表达式值的指定次幂的值RAND([seed])返回0~1之间的随机小数ROUND(numeric_expression,length[,function])将数值表达式四舍五入为整型表达式所给定的精度SQRT(float_expression)返回一个数的平方根算术函数举例:计算1024的平方根并显示结果printsqrt(1024)printabs(-10.51)printceiling(5+7/5+8.0)printpower(2,3)Printround(2.870560,2)Printround(5.910569,5)字符串函数字符串函数可以对char、nchar、varchar和nvchar等类型的参数执行操作,并返回相应的结果,返回值一般为字符串或数字。字符串函数功能描述ASCII(character_expression)返回字符表达式中最左侧的字符的ASCII代码值CHAR(integer_expression)将ASCII代码转换为字符UPPER(character_expression)将小写字符数据转换为大写的字符表达式LOWER(character_expression)将大写字符数据转换为小写字符数据后返回字符表达式字符串函数功能描述LEFT(character_expression,integer_expression)返回字符串左起若干个字符RIGHT(character_expression,integer_expression)返回字符串右起若干个字符LEN(string_expression)返回指定字符串表达式的字符数,其中不包含尾随空格LTRIM(character_expression)删除字符串左侧空格RTRIM(character_expression)删除字符串右侧空格SPACE(integer_expression)返回指定个数的空格STR(float_expression[,length[,decimal]])将数值转换为字符串SUBSTRING(expression,start,length)返回字符串中从起始位置开始的指定长度的字符串字符串函数举例:显示字符“S”的ASCII值PrintASCII('S')显示字符串“professional”的长度,从起始位置4开始取5个的字符并输出Printlen('professional')Printsubstring('professional',4,5)字符串函数举例:显示ASCII码为65的字符printChar('97')printRight('helloworld',3)printLtrim('helloworld')printStr(30.50,5,1)printStr(300)printSubstring('helloworld',3,4)printUpper('helloworld')日期和时间函数日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。日期和时间函数功能描述GETDATE()返回当前日期时间YEAR(date)返回指定日期的年份数MONTH(date)返回指定日期的月份数DAY(date)返回指定日期的日期数DATEPART(datepart,date)返回指定时间的具体时间DATENAME(datepart,date)返回指定时间的名字DATEADD(datepart,number,date)给时间数据加一段时间DATEDIFF(datepart,date1,date2)返回两个时间的间隔日期和函数举例:显示系统时间,计算1949年10月1日距今的年分数Print'系统当前时间:'Printgetdate()Print'新中国成立年数:'Printdatediff(year,'1949-10-1',getdate())Print'系统当前时间:'Printgetdate()Print‘新中国成立月数:'Printdatediff(month,'1949-10-1',getdate())显示系统当前时间的年份、月份和星期:Selectdatename(year,getdate())as年份,datename(month,getdate())as月份,datename(weekday,getdate())as星期Selectdatename(year,getdate())as年份,datename(month,getdate())as月份,datename(minute,getdate())as分转换函数转换的种类分为两种:隐性转换和显式转换。隐性转换:一般情况下,SQLServer会自动处理某些数据类型的转换。显式转换:无法由SQLServer自动转换的或者SQLServer自动转换的结果不符合预期结果,就需要使用转换函数做显式转换。用于转换的函数包括:CAST(expressionASdata_type):将一种数据类型的表达式显式转换为另一种数据类型的表达式。CONVERT(data_type,expression[,style]):将一种数据类型的表达式显式转换为另一种数