Microsoft SQL Server 数据库语言使用(十一) 注:该过程涉及到的数据库可以到我的资源中免费下载 一、函数 1.聚合函数:返回汇总值。 (1)、AVG(表达式) 返回表达式中所有的平均值。仅用于数字列并自动忽略NULL值。 例1:所有年份型号的所有产品的平均价格,即AVG函数作用于产品表的“list_price(价格)”,通过内连接品牌表on“品牌id”=“产品id”,条件为年份=2018的数据,通过产品名称排序。  (2)、COUNT(表达式) 返回表达式中非NULL值的数量。可用于数字和字符列。 例1:查询客户电话个数,  (3)、MAX(表达式) 返回表达式中的最大值,忽略NULL值。可用于数字、字符和日期时间列。 例1:以产品名字为条件,查询每个产品最大的价格,即以MAX函数作用于产品表,  (4)、MIN(表达式) 返回表达式中的最小值,忽略NULL值。可用于数字、字符和日期时间列。 (5)、SUM(表达式) 返回表达式中所有的总和,忽略NULL值。仅用于数字列。 例:创建一个表,添加7条数据,从1到6,第7位为null值,求平均数,在案例中,平均数=总和/非null总数,即21÷6=3.5,很明显最后输出的结果却是3,SQL Server提供了解决求平均值null带来的影响,为了保证结果绝对正确,可以使用“ISNULL”关键字对null值进行转换,即把带有null值的数据转换为0,这个也是SQL Server提供的解决求平均值null带来的影响方法。  2. 类型转换函数:将一种数据类型转换为另外一种。 (1)、CONVERT 使用convert关键字可以转换不同数据类型的拼接,而且convert关键字还可以用于不同格式的日期转换,从0到100+都有不同的日期格式。  (2)、CAST  (3)、Cast和Convert的区别 Cast 和Convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式。 CAST 和 CONVERT 提供相似的功能,只是语法不同。在时间转化中一般用到convert,因为它比cast多加了一个style(int类型),可以转化成不同时间的格式。 SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009 4:06PM SELECT CONVERT(varchar(100), GETDATE(), 1) 07/15/09 SELECT CONVERT(varchar(100), GETDATE(), 2) 09.07.15 SELECT CONVERT(varchar(100), GETDATE(), 3) 15/07/09 SELECT CONVERT(varchar(100), GETDATE(), 4) 15.07.09 SELECT CONVERT(varchar(100), GETDATE(), 5) 15-07-09 SELECT CONVERT(varchar(100), GETDATE(), 6) 15 07 09 SELECT CONVERT(varchar(100), GETDATE(), 7) 07 15, 09 SELECT CONVERT(varchar(100), GETDATE(), 8) 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 9) 07 15 2009 4:06:26:513PM SELECT CONVERT(varchar(100), GETDATE(), 10) 07-15-09 SELECT CONVERT(varchar(100), GETDATE(), 11) 09/07/15 SELECT CONVERT(varchar(100), GETDATE(), 12) 090715 SELECT CONVERT(varchar(100), GETDATE(), 13) 15 07 2009 16:06:26:513 SELECT CONVERT(varchar(100), GETDATE(), 14) 16:06:26:513 SELECT CONVERT(varchar(100), GETDATE(), 20) 2009-07-15 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 21) 2009-07-15 16:06:26.513 SELECT CONVERT(varchar(100), GETDATE(), 22) 07/15/09 4:06:26 PM SELECT CONVERT(varchar(100), GETDATE(), 23) 2009-07-15 SELECT CONVERT(varchar(100), GETDATE(), 24) 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 25) 2009-07-15 16:06:26.513 SELECT CONVERT(varchar(100), GETDATE(), 100) 07 15 2009 4:06PM SELECT CONVERT(varchar(100), GETDATE(), 101) 07/15/2009 SELECT CONVERT(varchar(100), GETDATE(), 102) 2009.07.15 SELECT CONVERT(varchar(100), GETDATE(), 103) 15/07/2009 SELECT CONVERT(varchar(100), GETDATE(), 104) 15.07.2009 SELECT CONVERT(varchar(100), GETDATE(), 105) 15-07-2009 SELECT CONVERT(varchar(100), GETDATE(), 106) 15 07 2009 SELECT CONVERT(varchar(100), GETDATE(), 107) 07 15, 2009 SELECT CONVERT(varchar(100), GETDATE(), 108) 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 109) 07 15 2009 4:06:26:513PM SELECT CONVERT(varchar(100), GETDATE(), 110) 07-15-2009 SELECT CONVERT(varchar(100), GETDATE(), 111) 2009/07/15 SELECT CONVERT(varchar(100), GETDATE(), 112) 20090715 SELECT CONVERT(varchar(100), GETDATE(), 113) 15 07 2009 16:06:26:513 SELECT CONVERT(varchar(100), GETDATE(), 114) 16:06:26:513 SELECT CONVERT(varchar(100), GETDATE(), 120) 2009-07-15 16:06:26 SELECT CONVERT(varchar(100), GETDATE(), 121) 2009-07-15 16:06:26.513 SELECT CONVERT(varchar(100), GETDATE(), 126) 2009-07-15T16:06:26.513 SELECT CONVERT(varchar(100), GETDATE(), 130) 23 ??? 1430 4:06:26:513PM SELECT CONVERT(varchar(100), GETDATE(), 131) 23/07/1430 4:06:26:513PM
3.日期函数:处理日期和时间。 (1)、由于日期不能直接执行算术函数,所以使用日期函数。 (2)、GETDATE() 当前的系统日期。  (3)、DATEADD(日期部分,number,date) 返回带有指定数字(number)的日期(date),该数字添加到指定的 日期部分(datepart),即当前的日期基础上向后添加5天,当前日期为19+5=24.  (4)、DATEDIFF(日期部分,date1,date2) 返回两个日期中指定的日期部分之间的差值,即把当前月数减去指定月数,得出差值。  (5)、DATENAME(日期部分,date) 返回日期中日期部分的字符串形式。  (6)、DATEPART(日期部分,date) 返回日期中指定的日期部分的整数形式。 ①、DATENAME 和 DATEPART 的区别,返回的值类型不同,一个是VARCHAR一个是INT,另外就是星 期会用本地语言来表示  (7)、YEAR(date) 返回指定日期的年份数值。 select YEAR(GETDATE())年份; (8)、MONTH(date)返回指定日期的月份数值。 select month(GETDATE())月份; (9)、DAY(date)返回指定日期的天数值。 select DAY(GETDATE())日;   4.数学函数:执行算术运算。 (1)、对数字值执行代数运算。 (2)、ABS(num_expr) 返回数值表达式的绝对值。 (3)、FLOOR(num_expr) 返回小于或等于数值表达式的最大整数。 (4)、CEILING(num_expr) 返回大于或等于数值表达式的最小整数。 (5)、RAND([seed]) 随机返回的到0-1之间的近似浮点值,可以对seed指定为整数表达式(可选)。  (7)、ROUND(num_expr,length) 对数值表达式截取指定的整数长度,返回四舍五入后的值,如例子中第三位小数四舍五入后保留两位有效小数,并且如果第三位参数是非0参数即大于0的情况下都会截取指定的整数长度,是0或者不输入第三个参数的情况下则会继续四舍五入。  ①、转换保留小数不保留0,或者保留几位小数。 select CAST(123.456 as numeric(10,2))
5.字符串函数:对字符串、二进制数据或表达式执行操作。 (1)、可用于binary 和varbinary数据类型列,但主要用于char和varchar数据类型。 (2)、Expr1+expr2 返回两个表达式的组合形式的字符串。注意int类型。  (3)、LEN(char_expr) 返回字符表达式的长度。  (4)、LOWER(char_expr) 将字符表达式全部转换为小写。 (5)、UPPER将字符表达式全部转换为大写。  (6)、LTRIM(char_expr) 返回删除掉前面空格的字符表达式(左边空格)。 (7)、RTRIM(char_expr) 返回删除掉前面空格的字符表达式(右边空格)。  (8)、REVERSE(char_expr) 反转字符表达式,即字符串反转拼接。  (9)、SUBSTRING(char_expr,start,length) 返回从字符表达式的指定位置开始,截取指定长度得到的字符集,即从第4位开始截取后面4位数。  (10)、RIGHT(char_expr,int_expr) 返回从字符表达式最右端起根据指定的字符个数得到的字符。  6.系统函数:从数据库返回在SQLSERVER中的值、对象或设置的特殊信息。 (1)、用于返回元数据或配置设置。 (2)、COALESCE(expr1,expr2, xprN) 返回第一个非NULL表达式。  (3)、DATALENGTH(‘expr’) 返回任何数据类型的实际长度。  (4)、ISNULL(expr,value) 使用指定的值替换的NULL表达式,即把表中带有null值的数据全部转换为0。  (5)、NULLIF(expr1,expr2) Expr1与Expr2相等时,返回Null,否则返回第一个表达式,当两个值相同时返回一个null值,不相同时返回第一个值。  (6)、row_number分页 row_number的用途的非常广泛,一般可以用来实现web程序的分页,他会为查询出来的每一行记 录生成一个序号,依次排序且不会 重复,注意使用row_number函数时必须要用over子句选择对某一列,或者几列进行排序才能生成序号。 
|