TSQL常用内置函数

7.    内置函数
7.1.    标量函数
?    系统函数
1、    Case
常用CASE用法

SELECT Title,'Price Range' =
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
        END
    FROM titles  ORDER BY price 
 



CASE语句在GROUP BY使用

SELECT 'Number of Titles', Count(*)
    FROM titles
    GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
 


CASE语句在ORDER BY 使用

SELECT
         CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
        END AS Range, Title
    FROM titles
   GROUP BY
    CASE  WHEN price IS NULL THEN 'Unpriced'
             WHEN price < 10 THEN 'Bargain'
                WHEN price BETWEEN 10 and 20 THEN 'Average'
          ELSE 'Gift to impress relatives'
     END, Title
ORDER BY
    CASE
 WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
 ELSE  'Gift to impress relatives'
END, Title
 



注:为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。

2、    判断数据类型函数

ISDATE(expression) -- 是否是合法日期函数
ISNUMERIC(expression) -- 是否是合法数字
DATALENGTH(expression) -- 返回字段的字节数
 



3、    处理空值函数

NULLIF(expression,expression)
如果函数的两个表达式相等,返回空值,如果不等返回第一个表达式的值,通常在统计平均值时非常有用。

ISNULL(check_expression,replacement_value) --当列值为空时,用其他数字代替
SELECT ISNULL(STATE_ID,0) FROM SETTLE_ENTER_RECORD

COALESCE(expression)
 


4、    转换函数

CONVERT(data_type,expression,[style])
SELECT CONVERT(varchar,ENTER_TIME) as dateTime FROM SETTLE_ENTER_RECORD
CAST(express AS data_type)
SELECT CAST(ENTER_TIME AS datetime) as dateTime FROM SETTLE_ENTER_RECORD
注:CONVERT()和CAST()区别在于CONVERT()函数允许指定返回结果的格式。
       在不使用格式化功能时推荐使用CAST()函数,因为他是SQL92标准函数
 


?    日期/时间函数
1、    获取系统时间

GETDATE() -- 返回系统时间
 


2、    获取部分日期/时间

DAY(date) --日期
MONTH(date) -- 月份
YEAR(date) --年
DATEPART(datepart,date) --获取部分时期
select DATEPART(yyyy,enter_time) from SETTLE_ENTER_RECORD
 


3、    日期/时间计算

DATEADD(datepart,number,date) -- 给指定日期添加一个间隔时间数
SELECT DATEADD(mm,10,enter_time) FROM SETTLE_ENTER_RECORD
DATEDIFF(datepart,startdate,enddate) --起始到终止日期的间隔时间
SELECT DATEDIFF(dd,enter_time,getDATE()) FROM SETTLE_ENTER_RECORD
 



?    字符串函数
1、    字符串长度

LEN(expression) -- 字符串长度
SELECT LEN(car_type_id) FROM SETTLE_ENTER_RECORD
 


2、    取子串

SUBSTRING(expression,start,length) --截取字符串
SELECT SUBSTRING(car_type_id,2,5) FROM SETTLE_ENTER_RECORD
 


3、    字符串位置

CHARINDEX(expression1,expression2) -- expression1在expression2的位置
SELECT CHARINDEX('2',car_type_id) FROM SETTLE_ENTER_RECORD
 


4、    删除空格

LTRIM(expression) --删除左边的空格
RTRIM(expression) --删除右边的空格
 


5、    大小写转换

UPPER(expression) --大写转换
LOWER(expression) --小写转换
 


6、    数值类型转换

STR(expression[,length]) -- 将数字类型转换为字符串类型
SELECT STR(car_type_id,5) FROM SETTLE_ENTER_RECORD
 


7、    字符类型同ASCII/UNICODE转换

CHAR(expression)
ASCII(expression)
NCHAR(expression)
UNICODE(expression)
 





7.2.    聚合函数

MAX(expression)    --最大值
MIN(expression) --最小值
AVG(expression) --平均值
SUM(expression) --总计
 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值