SQLServer的ISNULL应用举例

作者:网络 来源:佚名 更新时间:2008-05-07 14:20:40 点击:

isnull
使用指定的替换值替换 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。

示例
a. 将 isnull 与 avg 一起使用
下面的示例查找所有书的平均价格,用值 $10.00 替换 titles 表的 price 列中的所有 null 条目。

use pubs
go
select avg(isnull(price, $10.00))
from titles
go

下面是结果集:

--------------------------
14.24                     

(1 row(s) affected)

b. 使用 isnull
下面的示例为 titles 表中的所有书选择书名、类型及价格。如果一个书名的价格是 null,那么在结果集中显示的价格为 0.00。

use pubs
go
select substring(title, 1, 15) as title, type as type,
   isnull(price, 0.00) as price
from titles
go

c. 在full join情况下使用isnull
表a:
tid
uid
anum

表b:
tbid
uid
bnum1
bnum2
需要通过uid全连接两个表:
select a.tid,a.uid,a.anum,b.bnum1,b.bnum2 from a full join b on a.uid=b.uid
全连接会有很多为空的情况,可以使用isnull来解决,改为:
select isnull(a.tid,b.tid),isnull(a.uid,b.uid),isnull(a.anum,0),isnull(b.bnum1,0),isnull(b.bnum2,0) from a full join b on a.uid=b.uid

再加上一种在asp.net2.0中的综合用法:

<%@ page language="c#" %><!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">    <title>showing all items in a filtered list</title></head><body>    <form id="form1" runat="server">    <div>        <asp:dropdownlist appenddatabounditems="true" autopostback="true" datasourceid="sqldatasource2"            datatextfield="state" datavaluefield="state" id="dropdownlist1" runat="server">            <asp:listitem value="">all</asp:listitem>        </asp:dropdownlist><asp:sqldatasource connectionstring="<%$ connectionstrings:pubs %>"            id="sqldatasource2" runat="server" selectcommand="select distinct [state] from [authors]">        </asp:sqldatasource>        <br />        <br />        <asp:gridview autogeneratecolumns="false" datasourceid="sqldatasource1"            id="gridview1" runat="server" datakeynames="au_id">            <columns>              <asp:boundfield datafield="au_id" headertext="au_id" readonly="true" sortexpression="au_id" />              <asp:boundfield datafield="au_lname" headertext="au_lname" sortexpression="au_lname" />              <asp:boundfield datafield="au_fname" headertext="au_fname" sortexpression="au_fname" />              <asp:boundfield datafield="state" headertext="state" sortexpression="state" />            </columns>        </asp:gridview>        <asp:sqldatasource connectionstring="<%$ connectionstrings:pubs %>"            id="sqldatasource1" runat="server" selectcommand="select au_id, au_lname, au_fname, state from authors where state = isnull(@state, state)" cancelselectonnullparameter="false">            <selectparameters>                <asp:controlparameter controlid="dropdownlist1" name="state" propertyname="selectedvalue" type="string" />            </selectparameters>        </asp:sqldatasource>        </div>    </form></body></html>