zoukankan      html  css  js  c++  java
  • TSQL(4)功能函数

    SQL Server中的函数<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

              字符串函数

              日期函数

              数学函数

              系统函数

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

    字符串函数

     

    日期函数

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

    SELECT DATEPART(day, '<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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

    <?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />

     

    数学函数

    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—要求

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

        卡里面的“O0”(哦和零)“i1”(哎和一),用户反映说看不清楚,公司决定,把存储在数据库中的密码中所有的都改成,把所有的“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), ''))

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

     

  • 相关阅读:
    UVALive 6584 Escape (Regionals 2013 >> Europe
    莫比乌斯反演
    POJ 3986 Math teacher's homework
    ACM一些题目
    重探 DFT
    GDSOI2015 task4 ACU
    GDSOI2015 task2 覆盖半径
    USACO 2005 January Gold The Wedding Juicer
    CQOI2015 选数
    计算圆的包含(两两圆不相交)
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663735.html
Copyright © 2011-2022 走看看