T-SQL的高级查询详解(一)

在前面,我们已经学习了一些简单的增、删、改、查询的语句,但是为了更方便快捷的完成大量的任务,SQL server 提供了一些内部函数,可以和SQL server select 语句联合使用,也可以和update insert 一起使用,可以进行类型转换、日期处理、数学计算,实现系统功能。
根据用途,把函数分为四类,分别是字符串函数、日期函数、数学函数、系统函数。
1. 字符串函数
字符串函数用于控制返回给用户的字符串,这些功能仅用于字符型数据。如下表所示,列出了部分常用的字符串函数。
函 数 名
描  述
举  例
CharIndex
用来寻找一个指定的字符串在另一个字符串中的起始位置
SELECT CHARINDEX(‘Benet',‘My  Benet Course',1 )
返回:4
Len
返回传递给它的字符串长
SELECT LEN('SQL Server 课程')
返回:12
Ltrim
清除字符左边的空格
SELECT LTRIM ('  周智宇  ')
返回:周智宇  (后面的空格保留)
Rtrim
清除字符右边的空格
SELECT RTRIM ('  周智宇  ')
返回:  周智宇(前面的空格保留)
Right
从字符串右边返回指定数目的字符
SELECT RIGHT(' 买卖提. 吐尔松',3)
返回:吐尔松
Replace
替换一个字符串中的字符
SELECT REPLACE(' 莫乐可切. 杨可',' ',' ')
返回:莫乐兰切. 杨兰
字符串在信息处理时有特殊的地位,几乎所有信息都需要转换成字符串才能正确显示,尤其是不同数据拼接起来显示的使用更加广泛。
   字符串拼接起来和简单,两个字符串之间使用“ + ”即可。
案例需求: 查询用户13701418965 在未缴费的市话账单信息。如下图所示:
说明如下:
字符串拼接时 , 需要在两个字符串之间使用 “+”
从待缴费账单表里 accountbill ,查询未缴费 ispaid=0 的账单信息
使用字符串拼接,将电话号码字段 +’ 市话费用 ’+ 费用字段转换字符串
为了实现这项功能,可以通过以下 SQL 语句。
注: cast 函数主要是为了将数值型字段转换成字符型字段
2. 日期函数
SQL server 中不能直接对日期运用数学函数,需要使用日期函数用于操作日期值。例如,如果执行一个诸如“当日期 +1 ”的语句, SQL server 无法理解要增加的是一日、一月还是一年。
      日期函数帮助提起日期值中的日、月以及年,以便分别操作它们,如下表所示,列出了部分的常用日期函数。
函 数 名
描  述
举  例
GetDate
取得当前的系统日期
SELECT GETDATE()
返回:今天的日期
DateAdd
将指定的数值添加到指定的日期部分后的日期
SELECT DATEADD(mm,4,' 01/01/1999 ')
返回:以当前的日期格式返回 05/01/1999
DateDiff
两个日期之间的指定日期部分的区别
SELECT  DATEDIFF(mm,' 01/01/1999 ', '05/01/1999')
返回: 4
DateName
日期中指定日期部分的字符串形式
SELECT DATENAME(dw, ' 01/01/2000 ')
返回: Saturday
DatePart
日期中指定日期部分的整数形式
SELECT DATEPART(day, ' 01/15/2000 ')
返回: 15
案例需求:显示用户 13701418965 2008 6 月份的通话记录的通话时长
实施说明:
使用 Datediff 函数求开始时间与结束时间之间差值,精确到分钟。
为了实现这个功能,可以通过以下 SQL 语句来实现:
 
注意点 : 在输入代码的时候,要注意输入法的问题,一定要保持英文输入法状态,否则会报错书写时一定要遵守规则 . YYYY-MM-DD HH:MM:SS 分别代表年 小时 : 分钟 : . 书写时一定要严格遵守格式
3.数学函数
数学函数用于对数值进行代数运算,由于数据函数数量众多,不可能全部列举 . 如下表所示,列出了 SQL server 中常用的数学函数。
函 数 名
描  述
举  例
Abs
取数值表达式的绝对值
SELECT ABS(-43)
返回: 43
Ceiling
取大于或等于指定数值、表达式的最小整数
SELECT CEILING(43.5)
返回: 44
Floor
取小于或等于指定表达式的最大整数
SELECT FLOOR(43.5)
返回: 43
函 数 名
描  述
举  例
Power
取数值表达式的幂值
SELECT POWER(5,2)
返回: 25
Round
将数值表达式四舍五入为指定精度
SELECT ROUND(43.543,1)
返回: 43.5
Sign
对于正数返回 +1 ,对于负数返回 -1 ,对于 0 则返回 0
SELECT SIGN(-43)
返回: -1
Sqrt
取浮点表达式的平方根
SELECT SQRT(9)
返回: 3
案例需求:显示用户 13701418965 2008 6 月份的通话记录的通话时长 ( 通话时长精确到分钟,不到一分钟的按一分钟计算 .)
说明:
使用 使用 Datediff 函数求开始时间与结束时间之间差值,精确到秒。
将通话时长除以 60 秒,使用 ceiling 函数,取通话时长除以 60 结果的上限整数值。
实现语句
注意事项 : 上面所有这些函数,可以在 T-SQL 中混合使用,得到符合特殊要求的查询输出。使用 convert cast 类型转换使用频繁,在很多场合使用。尤其是在网站应用中,常常需要将各种类型的数据转换成指定格式的字符串,然后拼接成显示内容。
4. 系统函数
     系统函数用来获取有关 SQL server 中对象和设置的系统信息,如下表所示,列出了经常使用的一些系统函数。
函 数 名
描  述
举  例
Convert
数据类型转换
SELECT CONVERT (VARCHAR (5) , 12345)
返回:字符串 12345
Cast
数据类型转换,与 convert 相比语法较简单,转换功能也少
例如,将字符串转换日期格式, cast(‘ 2009-03-17 ’ as datetime)
Current_User
返回当前用户的名字
SELECT CURRENT_USER
返回:你登录的用户名
DataLength
返回用于指定表达式的
字节数
SELECT DATALENGTH (' 中国 A 联盟 ')
返回: 5
Host_Name
返回当前用户所登录的计算机名字
SELECT HOST_NAME()
返回:你所登录的计算机的名字
System_User
返回当前所登录的用户
名称
SELECT SYSTEM_USER
返回 : 你当前所登录的用户名
User_Name
从给定的用户 ID 返回用户名
SELECT USER_NAME(1)
返回 : 从任意数据库中返回 ”dbo”
注意事项 : 上面所有这些函数,可以在 T-SQL 中混合使用,得到符合特殊要求的查询输出。使用 convert cast 类型转换使用频繁,在很多场合使用。尤其是在网站应用中,常常需要将各种类型的数据转换成指定格式的字符串,然后拼接成显示内容。
案例需求 : 查询用户的欠费账单记录,要求并显示用户号码和欠费信息。
实施说明 :
查询过程是在 accountbill 表里查询 ispaid=0 表示未缴费的账单, calltype=0 市话, calltype=1 长话 ,charge 金额, accounttime 为账单时间。
实现语句
显示用户 13701418965 欠费账单中的市话费用
显示用户 13701418965 欠费账单中的长话费用

本文出自 “乐成的技术笔记” 博客,谢绝转载!

你可能感兴趣的:(数据库,查询,详解,高级,休闲)