SQL SERVER其它函数

如题所述

第1个回答  2022-11-18

  本篇文章还是学习《程序员的SQL金典》内容的记录 此次将讲解的是SQL SERVER常用的其它函数 (其它数据库这里就不罗列了 想看更多的可以关注《程序员的SQL金典》)

  具体的其他函数包括 类型转换的函数 空值处理的函数 流程控制函数 SQL SERVER独有函数

  类型转换的函数

  CAST ( expression AS data_type)函数         CONVERT ( data_type expression)函数

  上面两个函数都是SQL SERVER提供的支持类型转换的函数 参数expression为待进行类型转换的表达式(即需要待转换的数据) 而data_type为转换的目标类型(即待转换后的类型)

  SELECTCAST(&# ; &# ; AS INTEGER) as i CONVERT(DECIMAL &# ; &# ;) as d CONVERT(DATETIME &# ; : : &# ;) as dt

  空值处理的函数

  COALESCE ( expression value value …… valuen)函数 处理空值问题的函数 返回包括expression在内的所有参数中的第一个非空表达式 其中expression为待检测的表达式 而其后的参数个数不固定 可以多个 如果expression不为空值则返回expression 否则判断value 是否为空 如果不为空值则返回value 否则判断value 是否为空 如果不为空值则返回value ……以此类推 如果COALESCE函数里的参数全为NULL就会出错了 因为COALESCE函数的功能其实就是为了避免出现不想要的NULL值

  SELECT FName FBirthDay FRegDay COALESCE(FBirthDay FRegDay &# ; &# ;) AS ImportDayFROM T_Person

  ISNULL(expression value)函数 这个函数也是空值处理的函数 是COALESCE( )函数的简化版 只支持两个参数 其中expression为待检测的表达式 如果expression不为空值则返回expression 否则判断value是否为空 如果不为空值则返回value 如果都为空 则返回空

  SELECT FBirthDay FRegDay ISNULL(FBirthDay FRegDay) AS ImportDayFROM T_Person

  NULLIF ( expression expression )函数 这个函数也是空值处理的函数 主要是判断两个表达式是否等价 如果等价 则返回空 如果不等价 侧返回第一个expression 的值 需要注意的意 第一个表达式expression 不能为空

  SELECT FBirthDay FRegDay NULLIF(FBirthDay FRegDay)FROM T_Person

  流程控制函数

  SQL SERVER提供了流程控制函数 类似于我们代码里面的的SWITCH……CASE语句 那就是CASE函数 这个函数有如下两种运用方法

  CASE函数的语法如下

  用法一:

  CASE expression WHEN value THEN returnvalue WHEN value THEN returnvalue WHEN value THEN returnvalue …… ELSE defaultreturnvalue END

  CASE函数对表达式expression进行测试 如果expression等于value 则返回returnvalue 如果expression等于value 则返回returnvalue expression等于value 则返回returnvalue ……以此类推 如果不符合所有的WHEN条件 则返回默认值defaultreturnvalue

  SELECT FName (CASE FName WHEN Tom THEN GoodBoy WHEN Lily THEN GoodGirl WHEN Sam THEN BadBoy WHEN Kerry THEN BadGirl ELSE Normal END) as isgood FROM T_Person

  用法二

  CASE WHEN condition THEN returnvalue WHEN condition THEN returnvalue WHEN condition THEN returnvalue …… ELSE defaultreturnvalue END

  其中的condition condition condition ……为条件表达式 CASE函数对各个表达式从前向后进行测试 如果条件condition 为真则返回returnvalue 否则如果条件condition 为真则返回returnvalue 否则如果条件condition 为真则返回returnvalue ……以此类推 如果不符合所有的WHEN条件 则返回默认值defaultreturnvalue

  SELECT FName FWeight (CASE WHEN FWeight< THEN thin WHEN FWeight> THEN fat ELSE ok END) as isnormal FROM T_Person

  SQL SERVER独有函数

  PATINDEX ( &# ;%pattern%&# ; expression )函数 不同于CHARINDEX()函数 只能计算字符串中指定表达式的开始位置 PATINDEX ( &# ;%pattern%&# ; expression )函数提供了更加灵活的方式 它返回指定表达式中模式&# ;%pattern%&# ;第一次出现的起始位置 如果在全部有效的文本和字符数据类型中没有找到该模式 则返回零 在模式中可以使用通配符

  SELECT FName PATINDEX(&# ;%_m%&# ; FName)FROM T_Person

  REPLICATE (str count)函数 用来得到一个由子字符串重复了若干次所组成的字符串 其中参数str为子字符串 而count为重复次数 (其实就是一个复制函数)

  SELECT FName FWeight 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可以是text ntext 表达式和image 表达式以外的任意表达式 可以隐式转换为nvarchar

  SELECT ISDATE(NULL) as d ISDATE( / / ) as d ISDATE( a ) as d ISDATE( ) as d ISDATE( / / ) as d ISDATE( ) as d ISDATE( ) as d ISDATE( Abc ) as d

  ISNUMERIC ( expression )函数 用来确定表达式是否为有效的数值类型 如果输入表达式的计算值为有效的整数 浮点数 money 或decimal 类型时 ISNUMERIC 返回 否则返回

lishixinzhi/Article/program/SQL/201405/30848

相似回答