SQL SERVER其它函数

本篇文章还是学习《程序员的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 2 THEN returnvalue2
WHEN condition 3 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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 表达式
, case
, 判断data类型为空
, 返回空值
, when
, expression
, 空值测试
, CASE的其它用法
, THEN
, 非空值
, javascript空值判断
, 返回为空
空值判断
sql server 日期函数、sqlserver 日期函数、sql server 时间函数、sql server 函数、sqlserver 时间函数,以便于您获取更多的相关知识。

时间: 2024-12-06 12:29:50

SQL SERVER其它函数的相关文章

分析MS SQL Server里函数的两种用法

server|函数 SQL Server里函数的两种用法(可以代替游标) 1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分: 以下是引用片段: CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN DECLARE @TASKID INT, @HOUR FLOAT, @PERCENT FLOAT, @RETUR

SQL Server里函数的两种用法(可以代替游标)

server|函数|游标 SQL Server里函数的两种用法(可以代替游标)1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分:CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN   DECLARE @TASKID INT,          @HOUR FLOAT,           @PERCENT

使用sql server日期函数获取指定格式的当前日期

使用sqlserver日期函数中的getdate()可以获取当现的日期,下面就将为您介绍这种使用sqlserver日期函数获取当前日期的方法. 但是如果我们只需要得到当前的日期,不需要时间部分,或者不需要日期只要时间部分,再或者我要只要字段中的日期以某种形式显示,应该怎么操作呢? 可以使用convert(varchar(10),getdate(),120)这样的方法来实现,其中varchar(10)定义的是你要的字段的长度,当然长度的不同返回的也会不的,如果我们只要日期部分,设成10正好为日期长

SQL Server里函数的两种用法

SQL Server里函数的两种用法(可以代替游标) 1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分: 以下是引用片段: CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN DECLARE @TASKID INT, @HOUR FLOAT, @PERCENT FLOAT, @RETURN FLOAT IF

SQL Server编写函数获取汉字的拼音码

  SQL Server编写函数获取汉字的拼音码(首字母) Create function fun_getPY ( @str nvarchar(4000) ) returns nvarchar(4000) as begin declare @word nchar(1),@PY nvarchar(4000) set @PY='' while len(@str)>0 begin set @word=left(@str,1) --如果非汉字字符,返回原字符 set @PY=@PY+(case when

SQL Server DATEADD() 函数

本文转载自:点击打开链接 SQL Server DATEADD() 函数 DATEADD(datepart,number,date) date 参数是合法的日期表达式.number 是您希望添加的间隔数:对于未来的时间,此数是正数,对于过去的时间,此数是负数. datepart 参数可以是下列的值: 具体实例:

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

原文:SQL Server 聚合函数算法优化技巧 Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值执行计算并返回单一的值.聚合函数对一组值执行计算,并返回单个值.除了 COUNT 以外,聚合函数都会忽略空值. 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用.   v1.写在前面 如果有对Sql server聚合函数不熟或者忘

深入学习SQL Server聚合函数算法优化技巧_MsSql

Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值执行计算并返回单一的值.聚合函数对一组值执行计算,并返回单个值.除了 COUNT 以外,聚合函数都会忽略空值. 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用. 一.写在前面 如果有对Sql server聚合函数不熟或者忘记了的可以看我之前的一片博客. 本文中所有数据演示都是用

sql server count函数问题

问题描述 sql server count函数问题 代码: select jl.ORGAN_NAME as '油站名称',jl.KPLX as '开票类型',jl.SFCH as '冲红数量',sum(jl.KPJE) as '开票金额' from DZFP_KPJL jl where jl.ORGAN_NAME = '组织机构2' and jl.KPRQ between '2016-03-22' and '2016-03-24' group by jl.ORGAN_NAME,jl.KPLX 查