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

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

  类型转换的函数

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

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

SELECT
CAST('-30' AS INTEGER) as i,
CONVERT(DECIMAL,'3.1415726') as d,
CONVERT(DATETIME,'2008-08-08 08:09:10') as dt
  空值处理的函数

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

SELECT FName,FBirthDay,FRegDay,
COALESCE(FBirthDay,FRegDay,'2008-08-08') AS ImportDay
FROM T_Person

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

SELECT FBirthDay,FRegDay,
ISNULL(FBirthDay,FRegDay) AS ImportDay
FROM T_Person

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

SELECT FBirthDay,FRegDay,
NULLIF(FBirthDay,FRegDay)
FROM T_Person
  流程控制函数

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

 CASE函数的语法如下:

用法一:

CASE expression
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
WHEN value3 THEN returnvalue3
……
ELSE defaultreturnvalue
END

CASE函数对表达式expression进行测试,如果expression等于value1则返回returnvalue1,如果expression等于value2则返回returnvalue2,expression等于value3则返回returnvalue3,……以此类推,如果不符合所有的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 condition1 THEN returnvalue1
WHEN condition THEN returnvalue2
WHEN condition THEN returnvalue3
……
ELSE defaultreturnvalue
END

其中的condition1 、condition 2、condition 3……为条件表达式,CASE函数对各个表达式从前向后进行测试,如果条件condition1为真则返回returnvalue1,否则如果条件condition2为真则返回returnvalue2,否则如果条件condition3为真则返回returnvalue3,……以此类推,如果不符合所有的WHEN条件,则返回默认值defaultreturnvalue。

SELECT
FName,
FWeight,
(CASE
WHEN FWeight<40 THEN 'thin'
WHEN FWeight>50 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/20 AS INT),
REPLICATE(FName, CAST(FWeight/20 AS INT))
FROM T_Person

REVERSE(expression)函数:将一个字符串的顺序颠倒。

SELECT FName, REVERSE(FName)
FROM T_Person

ISDATE(expression)函数:用来确定输入表达式是否为有效日期。如果输入表达式是有效日期,那么ISDATE 返回 1;否则,返回 0。expression参数为要验证其是否为日期的表达式。expression可以是text、ntext 表达式和image 表达式以外的任意表达式,可以隐式转换为nvarchar。

SELECT
ISDATE(NULL) as d1,
ISDATE('13/43/3425') as d2,
ISDATE('1995-10-1a') as d3,
ISDATE(19920808) as d4,
ISDATE('1/23/95') as d5,
ISDATE('1995-10-1') as d6,
ISDATE('') as d7,
ISDATE(' Abc') as d8

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

SELECT
ISNUMERIC(NULL) as d1,
ISNUMERIC('13/43/3425') as d2,
ISNUMERIC('30a.8') as d3,
ISNUMERIC(19920808) as d4,
ISNUMERIC('1/23/95') as d5,
ISNUMERIC('3E-3') as d6,
ISNUMERIC('') as d7,
ISNUMERIC('-30.3') as d8

SQL SERVER其它函数的更多相关文章

  1. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  2. SQL Server排序函数row_number和rank的区别

    SQL Server排序函数row_number和rank的区别 直接看测试结果 declare @table table(name varchar(100),amount int, memo var ...

  3. 数据库开发基础-SQl Server 聚合函数、数学函数、字符串函数、时间日期函数

    SQL 拥有很多可用于计数和计算的内建函数. 函数的语法 内建 SQL 函数的语法是: SELECT function(列) FROM 表 函数的类型 在 SQL 中,基本的函数类型和种类有若干种.函 ...

  4. SQL SERVER 2008函数大全(含例子)

    --SQL SERVER 2008 函数大全 /* author:TracyLee csdncount:Travylee */ /* 一.字符串函数: 1.ascii(字符串表达式)    返回字符串 ...

  5. Sql server 日期函数和日期转换

    时间函数 SQL Server Date 函数 下面的表格列出了 SQL Server 中最重要的内建日期函数: 函数 描述 GETDATE() 返回当前日期和时间 DATEPART(Type,dat ...

  6. SQL Server CONVERT() 函数(转)

    定义和用法 CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),dat ...

  7. Sql Server REPLACE函数的使用;SQL中 patindex函数的用法

    Sql Server REPLACE函数的使用 REPLACE用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法REPLACE ( ''string_replace1'' ...

  8. SQL Server用户自定义函数

    用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统 函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过EXECUTE 命令来执行.在 SQL Server 中根据函数 ...

  9. SQL Server DATEDIFF() 函数

    Server Date 函数 定义和用法 DATEDIFF() 函数返回两个日期之间的天数. 语法 DATEDIFF(datepart,startdate,enddate) startdate 和 e ...

  10. SQL Server DATEADD() 函数

    SQL Server Date 函数 定义和用法 DATEADD() 函数在日期中添加或减去指定的时间间隔. 语法 DATEADD(datepart,number,date) date 参数是合法的日 ...

随机推荐

  1. 收集一下Windows7系统啊

    Windows7系统:http://down.662p.com/list/141_1.html   萝卜家园WIN7系统X86位旗舰特别GHOST版2014年12月 这个是萝卜家园WIN7系统X86位 ...

  2. jquery设置div,文本框 表单的值示例

    我们将使用前一章中的三个相同的方法来设置内容: text() - 设置或返回所选元素的文本内容html() - 设置或返回所选元素的内容(包括 HTML标记)val() - 设置或返回表单字段的值 1 ...

  3. 【学习笔记】【C语言】位运算

    1. & 按位与 1> 功能 只有对应的两个二进位均为1时,结果位才为1,否则为0. 2> 举例: 比如9&5,其实就是1001&101=1,因此9&5=1 ...

  4. 关于IIS中WEB网站访问弹“验证输入框”及“401限制访问”的解决办法

    最近在配置IIS网站的过程中,不管是本地还是外部访问配置的网站,出现了需要输入用户名.密码.及域的对话框,解决之后又出现页面401限制访问的错误页面. 就这两项错误,依次做一下解决办法的整理. 解决流 ...

  5. (转)RabbitMQ消息队列(三):任务分发机制

    在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题.在实际的应用场景中,这是远远不够的.从本篇文章开始,我们将结合更加实际的应用场景来 ...

  6. hdu 2066 一个人的旅行 Dijkstra

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意分析:以草儿家为原点,给出城市间相互抵达的时间,给出草儿想去的城市,求最短时间.典型的单源最 ...

  7. 使用记事本+CSC编译程序

    本次学习主要阐明.NET开发可以不使用VS,也能像Java一样使用命令窗口.但实际意义不大. 诸位看管不必太留意.(仅供留着给公司新人,树(tree)新(new)风(bee)用.) 1.新建一个文本文 ...

  8. windows phone 手机截图

    无聊在商城找了一款小游戏玩,看到一个截屏功能,就google了一下具体实现,还是比较简单的,主要是靠WriteableBitmap(提供一个可写入并可更新的 BitmapSource)类实现.看一下m ...

  9. 网络A、B、C类IP地址的区别

    学网络之前得先要明白几个概念:(起初我也不怎么知道后来就慢慢会了) 1字节=8位,1位就是1个数字,所以1字节等于8个数字. 2的8次方,和二进制11111111转换为十进制并不一回事. 0-127是 ...

  10. Linux C 程序 Linux网络编程(21)

    Linux网络编程网络编程必备的理论基础网络模型,地址,端口,TCP/IP协议 TCP/IP协议是目前世界上使用最广泛的网络通信协议日常中的大部分应用使用该系列协议(浏览网页,收发电子邮件,QQ聊天等 ...