使用表达式
一、表达式
表达式可以是常量、函数和公式的任何组合,它返回一个值。
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返回结果