本篇文章还是学习《程序员的SQL金典》内容的记录此次将讲解的是SQL SERVER常用的其它函数(其它数据库这里就不罗列了想看更多的可以关注《程序员的SQL金典》)
具体的其他函数包括类型转换的函数空值处理的函数流程控制函数SQL SERVER独有函数
类型转换的函数
CAST ( expression AS data_type)函数 CONVERT ( data_type expression)函数
上面两个函数都是SQL SERVER提供的支持类型转换的函数参数expression为待进行类型转换的表达式(即需要待转换的数据)而data_type为转换的目标类型(即待转换后的类型)
SELECT
CAST(;; AS INTEGER) as i
CONVERT(DECIMAL;;) as d
CONVERT(DATETIME; ::;) as dt
空值处理的函数
COALESCE ( expressionvaluevalue……valuen)函数处理空值问题的函数返回包括expression在内的所有参数中的第一个非空表达式其中expression为待检测的表达式而其后的参数个数不固定可以多个如果expression不为空值则返回expression否则判断value是否为空如果不为空值则返回value否则判断value是否为空如果不为空值则返回value……以此类推如果COALESCE函数里的参数全为NULL就会出错了因为COALESCE函数的功能其实就是为了避免出现不想要的NULL值
SELECT FNameFBirthDayFRegDay
COALESCE(FBirthDayFRegDay;;) AS ImportDay
FROM T_Person
ISNULL(expressionvalue)函数这个函数也是空值处理的函数是COALESCE( )函数的简化版只支持两个参数其中expression为待检测的表达式如果expression不为空值则返回expression否则判断value是否为空如果不为空值则返回value如果都为空则返回空
SELECT FBirthDayFRegDay
ISNULL(FBirthDayFRegDay) AS ImportDay
FROM T_Person
NULLIF ( expression expression )函数这个函数也是空值处理的函数主要是判断两个表达式是否等价如果等价则返回空如果不等价侧返回第一个expression的值需要注意的意第一个表达式expression不能为空
SELECT FBirthDayFRegDay
NULLIF(FBirthDayFRegDay)
FROM T_Person
流程控制函数
SQL SERVER提供了流程控制函数类似于我们代码里面的的SWITCH……CASE语句那就是CASE函数这个函数有如下两种运用方法
CASE函数的语法如下
用法一:
CASE expressionWHEN value THEN returnvalueWHEN value THEN returnvalueWHEN value THEN returnvalue……ELSE defaultreturnvalueEND
CASE函数对表达式expression进行测试如果expression等于value则返回returnvalue如果expression等于value则返回returnvalueexpression等于value则返回returnvalue……以此类推如果不符合所有的WHEN条件则返回默认值defaultreturnvalue
SELECTFName(CASE FNameWHEN Tom THEN GoodBoyWHEN Lily THEN GoodGirlWHEN Sam THEN BadBoyWHEN Kerry THEN BadGirlELSE NormalEND) as isgoodFROM T_Person
用法二
CASEWHEN condition THEN returnvalueWHEN condition THEN returnvalueWHEN condition THEN returnvalue……ELSE defaultreturnvalueEND
其中的condition condition condition ……为条件表达式CASE函数对各个表达式从前向后进行测试如果条件condition为真则返回returnvalue否则如果条件condition为真则返回returnvalue否则如果条件condition为真则返回returnvalue……以此类推如果不符合所有的WHEN条件则返回默认值defaultreturnvalue
SELECTFNameFWeight(CASEWHEN FWeight< THEN thinWHEN FWeight> THEN fatELSE okEND) as isnormalFROM T_Person
SQL SERVER独有函数
PATINDEX ( ;%pattern%; expression )函数不同于CHARINDEX()函数只能计算字符串中指定表达式的开始位置PATINDEX ( ;%pattern%; expression )函数提供了更加灵活的方式它返回指定表达式中模式;%pattern%;第一次出现的起始位置如果在全部有效的文本和字符数据类型中没有找到该模式则返回零在模式中可以使用通配符
SELECT FNamePATINDEX(;%_m%;FName)
FROM T_Person
REPLICATE (strcount)函数用来得到一个由子字符串重复了若干次所组成的字符串其中参数str为子字符串而count为重复次数(其实就是一个复制函数)
SELECT FNameFWeight
CAST(FWeight/ AS INT)
REPLICATE(FName CAST(FWeight/ AS INT))
FROM T_Person
REVERSE(expression)函数将一个字符串的顺序颠倒
SELECT FName REVERSE(FName)
FROM T_Person
ISDATE(expression)函数用来确定输入表达式是否为有效日期如果输入表达式是有效日期那么ISDATE 返回 否则返回 expression参数为要验证其是否为日期的表达式expression可以是textntext 表达式和image 表达式以外的任意表达式可以隐式转换为nvarchar
SELECTISDATE(NULL) as dISDATE(//) as dISDATE(a) as dISDATE() as dISDATE(//) as dISDATE() as dISDATE() as dISDATE( Abc) as d
ISNUMERIC ( expression )函数用来确定表达式是否为有效的数值类型如果输入表达式的计算值为有效的整数浮点数money 或decimal 类型时ISNUMERIC 返回 否则返回
SELECTISNUMERIC(NULL) as dISNUMERIC(//) as dISNUMERIC(a) as dISNUMERIC() as dISNUMERIC(//) as dISNUMERIC(E) as dISNUMERIC() as dISNUMERIC() as d