T-SQL(4)-功能函数

SQL Server中的函数

          字符串函数

          日期函数

          数学函数

          系统函数

这些都相当于C语言中的内部函数,我们来一个一个看:

字符串函数

 

日期函数

SELECT DATEPART(day, ' 01/15/2000 ')

返回:15

日期中指定日期部分的整数形式

DATEPART

SELECT GETDATE()

返回:今天的日期

取得当前的系统日期

GETDATE

举例

描述

函数名

SELECT DATEADD(mm,4,’ 01/01/99 ’)

返回:以当前的日期格式返回 05/01/99

将指定的数值添加到指定的日期部分后的日期

DATEADD

SELECT DATEDIFF(mm,‘ 07/01/99 ’,‘11/01/ 99’ )

返回:4

两个日期之间的指定日期部分的区别

DATEDIFF

SELECT DATENAME(dw,' 01/01/2000 ')

返回:Saturday

日期中指定日期部分的字符串形式

DATENAME

 

数学函数

SELECT SQRT(9)

返回:3

取浮点表达式的平方根

Sqrt

SELECT ABS(-43)

返回:43

取数值表达式的绝对值

ABS

举例

描述

函数名

SELECT CEILING(43.5)

返回:44

返回大于或等于所给数字表达式的最小整数

CEILING

SELECT POWER(5,2)

返回:25

取数值表达式的幂值

POWER

SELECT ROUND(43.543,1)

返回:43.5

将数值表达式四舍五入为指定精度

ROUND

SELECT SIGN(-43)

返回:-1

对于正数返回+1,对于负数返回-1,对于0 则返回0

Sign

SELECT FLOOR(43.5)

返回:43

取小于或等于指定表达式的最大整数

FLOOR

 

系统函数

SELECT USER_NAME(1)

返回:从任意数据库中返回dbo”

从给定的用户I D返回用户名

USER_NAME

SELECT CONVERT (VARCHAR (5)12345)

返回:字符串12345

用来转变数据类型

CONVERT

举例

描述

函数名

SELECT CURRENT_USER

返回:你登录的用户名

返回当前用户的名字

CURRENT_USER

SELECT DATALENGTH ('中国A')

返回:7

返回用于指定表达式的字节数

DATALENGTH

SELECT HOST_NAME()

返回:你所登录的计算机的名字

返回当前用户所登录的计算机名字

HOST_NAME

SELECT SYSTEM_USER

返回:你当前所登录的用户名

返回当前所登录的用户名称

SYSTEM_USER

 

 

案例分析1—要求

          某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题:

    卡里面的“O 0” (哦和零)“i 1” (哎和一),用户反映说看不清楚,公司决定,把存储在数据库中的密码中所有的都改成,把所有的“i”都改成“ 1”

       请编写SQL语句实现以上要求;

          数据库表名:Card;密码字段名:PassWord

 

案例分析1—分析

          这是更新语句,需要使用UPDATE语句;

          因为牵涉到字符串的替换,需要使用到SQL Server中的函数Replace

 

案例分析1—T-SQL

两行SQL语句

Update Card Set PassWord = Replace(PassWord,'O','0')

Update Card Set PassWord = Replace(PassWord,'i','1')

一行SQL语句

Update Card

Set        PassWord = Replace(Replace(PassWord,'O','0'),'i','1')

 

案例分析2—要求

          在数据库表中有以下字符数据,如:

       13-113-213-313-1013-10013-10813-1813-1113-1514-114-2

 

       现在希望通过SQL语句进行排序,并且首先要按照前半部分的数字进行排序,然后再按照后半部分的数字进行排需,输出要排成这样:

       13-113-213-313-1013-1113-1513-1813-10013-10814-114-2

 

          数据库表名:SellRecord;字段名:ListNumber

 

案例分析2—分析

          这是查询语句,需要使用SELECT语句

          需要使用到ORDER BY进行排序,并且在ORDER BY的排序列中,也需要重新计算出排序的数字来

          前半部分的数字,可以从先找到“-”符号的位置,然后,取其左半部分,最后再使用Convert函数将其转换为数字:

       Convert(int, Left(ListNumber, CharIndex('-', ListNumber)-1))

          后半部分的数字,可以先找到“-”符号的位置,然后把从第一个位置到该位置的全部字符替换为空格,最后再使用Convert函数将其转换为数字:

 

案例分析2—T-SQL

Convert(int, Stuff(ListNumber,1, Charindex('-', ListNumber), ''))

SELECT ListNumber

FROM    SellRecord

ORDER BY

Convert(int, Left(ListNumber, CharIndex('-', ListNumber)-1)),

Convert(int, Stuff(ListNumber,1, Charindex('-', ListNumber), ''))

 

当然,还有其他的计算出排序列的方法,大家可以自己思考一下。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值