替换Access 2003和SQL Server 2000中的输入行
Access 2003的产出: ID |说明|数量|标题| Obj替换Access 2003和SQL Server 2000中的输入行,sql,sql-server,ms-access,Sql,Sql Server,Ms Access,Access 2003的产出: ID |说明|数量|标题| Obj ------------------------------------------------------------- 17 |6124000.00 | | 18 |7330000.00 | 19 |1340000.00 | 8414 | 69327 22 |2120000.00 | 8414 | 69344 23 |3615000.00 | 8414 | 69327 24 |4320000.00 | 8414 | 6932
------------------------------------------------------------- 17 |6124000.00 | |
18 |7330000.00 |
19 |1340000.00 | 8414 | 69327
22 |2120000.00 | 8414 | 69344
23 |3615000.00 | 8414 | 69327
24 |4320000.00 | 8414 | 69327
25 |5809500.00 | 8414 | 69327 查询:
SELECT TVFundBillDetail.ID ,
TVFundBillDetail.HID ,
TVFundBillDetail.Description ,
TVFundBillDetail.Quantity ,
TVFundBillDetail.Title ,
TVTitle.Name TitleName ,
Obj ,
TVAllObjects.Name ObjName
FROM TVFundBillDetail
LEFT OUTER JOIN TVTitle ON TVFundBillDetail.Title = TVTitle.Code
LEFT OUTER JOIN TVAllObjects ON TVFundBillDetail.Obj = TVAllObjects.Code
问题:说明列中显示输入行的顺序。当title和obj为null时,则替换输入行的序列。应用程序是access 2003,数据库管理系统是SQL Server 2000,实现这一点可能有很多方法。 要访问,只需在查询中使用
Nz()
,如下所示:
...
Nz(TVFundBillDetail.Title, " ")
...
如果Title
为NULL
,则会得到4个空格(如果愿意,也可以使用“0000”
)
对于SQL server,等效函数是COALESCE()
:
如果您将该查询用作普通的Qccess查询,则第一个查询将起作用。如果您正在使用传递查询或公开SQL Server视图,则第二个视图将起作用。@omid,发生这种情况的原因是您的
TVFundBillDetail.Title
不是字符串而是数值,COALESCE()
将使用该类型,并最终将空格转换为0
。尝试使用类似于COALESCE(CAST(TVFundBillDetail.Title作为VARCHAR(5)),'')的东西。我不能测试这些,因为我不知道;我的计算机上现在没有安装SQL Server。
...
COALESCE(TVFundBillDetail.Title, " ")
...