使用表达式
一、表达式
表达式可以是常量、函数和公式的任何组合,它返回一个值。
1、创建表达式
可以使用常量、变量、运算符和函数等来创建SQL表达式
表达式的组成部分 | 示例 |
数字常量 | 1、2、3 |
字符串字面值 | ‘LastName’、’XXM’ |
日期 | ‘1/6/9’ ‘Jan 6, 1980’ |
数学运算符 | *、/、%、+、- |
字符串运算符 | + |
按位运算符 | &、|、^、~ |
列 | 列名 |
Case表达式 | Case Column1 when 1 then ‘on’ when 0 then ‘end’ end as Status |
子查询 | (Select 3) |
用户定义的变量 | @MyVariable |
全局变量 | @@error |
标量函数 | GetDate()、SysUser() |
用户定义的函数 | dbo.MyUDF() |
注:Floor() 、Ceiling() 返回舍入后的得到整数。
二、Case表达式
1、简单Case
Case 表达式
when 值1 then 返回值1
when 值2 then 返回值2
else 返回值3
end as 别名
如:select case is_send
when 1 then '已发放'
when 0 then '未发放'
else '未知'
end 工资发放
from gongzi
2、布尔表达式
Case
when (bool表达式1) then 返回值1
when (bool表达式2) then 返回值2
else
end as 别名
如:select case
when is_send=1 then '已发放'
when is_send=0 then '未发放'
else '未知'
end 工资发放
from gongzi
注:其中的表达式可以是组合表达式,含有 and or not
三、使用空值
从技术上说,空值表示’未知的值’,实际上,空值可以表示还没有向数据库中输入
相应数据或对于特定的记录行来说,该列不适用。
1、检测空值
when expression is null / is not null
注: null=null 返回false
1+null 返回null
对于规则‘将空值与非空值相加时,结果也为空值‘,一种例外是聚合函数累计包含
空值的列时
如:sum() ,avg() 等,通常忽略空值
2、处理空值
1、IsNull()
Isnull(Source_expression,Replacement_Value)
当Source_expression is null 时,返回Replacement_Value
或则返回Source_expression
如:
select id,bmid,zwid,truename,Isnull(tele,'暂无')
from yuangong
2、Coalesce()
Coalesce(Expression1,expression2,expression3....)
接受多个表达式或列作为参数,并返回第一个非空值
如:
select Coalesce(tele,id,bmid)
from yuangong
3、NullIf()
NullIf(e1,e2)
接受两个参数,如果它们相等时,则返回一个空值
如: select NullIf(id,bmid)
from yuangong
4、修改空值+非空值的返回结果
Set Concat_Null_Yields_Null OFF 影响相加时返回结果
Set Ansi_Nulls OFF 影响null=null返回结果