1、判空函数
说明:使用指定的替换值替换 NULL。
语法:
ISNULL
( check_expression , replacement_value )
参数:
check_expression:将被检查是否为 NULL 的表达式。check_expression 可以为任何类型。
replacement_value:当 check_expression 为 NULL 时要返回的表达式。replacement_value
必须是可以隐式转换
为 check_expresssion 类型的类型。
返回值:返回与 check_expression 相同的类型。
注释:如果 check_expression 不为 NULL,则返回它的值;否则,在将 replacement_value 隐式转换为 check_expression 的类型(如果这两个类型不同)后,则返回前者。
实例:
加入int类型的Flag1为一,则用0代替它的值
ISNULL(Flag1,0) //加入int类型的Flag1为一,则用0代替它的值
注意
:因为Flag1是整数(int)类型的,所以后面值肯定也要是int类型的,否则不能通过。因为假如一个数据为空,传到页面显示的时候就会出现undefined,对于程序员来说,这是很正常的事情,很明确就知道它是一个空值,但对于普通用户,undefined就很费解了,我们怎么样才能在一个整形字段为空,用空字符串替代呢?用ISNULL肯定是不能解决的,不要着急,我们可以使用ISNULL、case when和conver函数进行解决。
2、case when
CASE WHEN的两种格式
1.简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
2.Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
1).两者相比,Case搜索函数功能更强。
2).Case函数类似于if……else if 语句,只返回第一个符合条件的值,之后的部分会被忽略
3、convert函数
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。
语法:
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length)
规定目标数据类型(带有可选的长度)。
data_to_be_converted
含有需要转换的值。
style
规定日期/时间的输出格式。
可以使用的
style
值:
Style ID
|
Style 格式
|
100 或者 0
|
mon dd yyyy hh:miAM (或者 PM)
|
101
|
mm/dd/yy
|
102
|
yy.mm.dd
|
103
|
dd/mm/yy
|
104
|
dd.mm.yy
|
105
|
dd-mm-yy
|
106
|
dd mon yy
|
107
|
Mon dd, yy
|
108
|
hh:mm:ss
|
109 或者 9
|
mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
|
110
|
mm-dd-yy
|
111
|
yy/mm/dd
|
112
|
yymmdd
|
113 或者 13
|
dd mon yyyy hh:mm:ss:mmm(24h)
|
114
|
hh:mi:ss:mmm(24h)
|
120 或者 20
|
yyyy-mm-dd hh:mi:ss(24h)
|
121 或者 21
|
yyyy-mm-dd hh:mi:ss.mmm(24h)
|
126
|
yyyy-mm-ddThh:mm:ss.mmm(没有空格)
|
130
|
dd mon yyyy hh:mi:ss:mmmAM
|
131
|
dd/mm/yy hh:mi:ss:mmmAM
|
实例
下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:
CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)
结果类似:
Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635
CONVERT() 函数将一种类型的数据转换为另外一种数据类型。
例子:将int类型的Flag1转换为varchar(10)类型
convert(varchar(10),Flag1)
4、解决不同类型int类型为空时,用空字符串代替
1、假如它是空,就将其转换为0
2、因为空字符串也是字符串,所以当Flag1不是为空的时候,还是需要将其转换为字符串,所以无论Flag1是否为空,结果都是字符串,所以这样子能运行
case
when 0 = ISNULL(Flag1,0) then ' '
else convert(varchar(10),Flag1)
end
自己想出来的,可能效率比较低,假如有更好的方法,希望赐教!