1、COALESCE()函数
---简介---
T-SQL的COALESCE()函数能够让你指定多个表达式,而且COALESCE()会返回组里第一个非空的值。要使用下面的形式,其中expression可以是任何数据类型,并能够等于大多数合法的表达式:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
如果所有自变量(expression1-N)均为 NULL,则 COALESCE 返回 NULL 值。
---示例---
create database dbTest
use dbTest
create table basic
(
[id] int identity(1,1) primary key,
[length] decimal null,
[height] decimal null,
[width] decimal null
)
插入一条数据:
insert into basic values(null,null,null)
查询语句:
select coalesce(length,height,width) from basic
--查询结果:NULL
插入下列数据:
insert into basic values(1.00,null,null)
insert into basic values(2.00,null,null)
insert into basic values(3.00,null,null)
insert into basic values(null,4.00,null)
insert into basic values(null,5.00,null)
insert into basic values(null,6.00,null)
insert into basic values(null,null,7.00)
insert into basic values(null,null,8.00)
insert into basic values(null,null,9.00)
查询语句:
★ select coalesce(max(height),0)+1.00 from basic
★ select cast(coalesce(length * 2, height, width * 3) as decimal ) as 'Total List' from basic
查询结果:
★7.00
★2、4、6、4、5、6、21、24、27;
/*我们一般用它来检索索引(顺序号,层次号),最大者id*/
返回任何表达式所占用的字节数。
2.DATALENGTH
对 varchar、varbinary、text、image、nvarchar 和 ntext 数据类型特别有用,因为这些数据类型可以存储可变长度数据。
NULL 的 DATALENGTH 的结果是 NULL。
---示例---
以上例为准,查询语句:
select datalength(width) from basic
查询结果:NULL、NULL、NULL、NULL、NULL、NULL、5、5、5(也就是decimal表达式占用地字节数为5,int 为4,你可以试试其它的sql数据类型)
/*我们一般用于查询将image,varbinary数据类型*/
3.
Sql Server中两个判断是否为空的函数NULLIF和ISNULL的说明如下:
NULLIF():需要两个参数
例子:NULLIF(a,b)
说明:如果a和b是相等的,那么返回NULL,如果不相等返回a
select NULLIF('eqeqweqwe','1') 结果是eqeqweqwe
select NULLIF(1,1) 结果是NULL
a和b的类型要一致
ISNULL():需要两个参数
例子:ISNULL(a,b)
说明:如果a和b同时为NULL,返回NULL,如果a为NULL,b不为NULL,返回b,如果a不为NULL,b为NULL返回a,如果a和b都不为NULL返回a
select ISNULL(null,null)结果是null
select ISNULL(null,33)结果是33
select ISNULL('ddd',null)结果是ddd
select ISNULL(44,33)结果是44
4.
QUOTENAME (Transact-SQL)
这个函数会返回一个添加了分隔符的Unicode字符串, 这个函数会使得输入的字符串变为一个合法的Microsoft SQL Server的分隔了的标示符.
格式:
QUOTENAME ( 'character_string' [ , 'quote_character' ] )
参数:
-
'
character_string
'
-
这是一个Unicode字符数据组成的字符串. character_string 是一个 sysname 并且其上限为128个字符, 如果你输入超过128个字符, 那么会返回NULL.
-
'
quote_character
'
-
这是一个单个字符的字符串, 被指派用来作分隔符的. 它可以使单引号( ' ), 左括号或右括号( [ ] ), 或者是双引号( " ). 如果quote_character 没被指定的话, 默认会使用方括号.
举例:
select QUOTENAME('%' + 'awpatp'+ '%','''')
结果:
'%yunzhang%'
select QUOTENAME( 'awpatp','[')
结果:
[yunzhang]