如何使此SQL语句返回空字符串而不是NULLS?

时间:2009-02-25 04:03:01

标签: sql null

LastAccessed=(select max(modifydate) from scormtrackings WHERE 
bundleid=@bundleid and userid=u.userid),
CompletedLessons=(select Value from scormtrackings WHERE 
bundleid=@bundleid and userid=u.userid AND param='vegas2.progress'),
TotalLessons=100,
TotalNumAvail=100,
TotalNumCorrect=(SELECT Value FROM scormtrackings WHERE 
bundleid=@bundleid AND userid=u.userid AND param='cmi.score.raw')

这只是我的ASP.NET Repeater使用的大型select语句的一部分,当值为NULL时,它会一直崩溃,我尝试了ISNULL()但是它没有工作,或者我做错了。

ISNULL((SELECT max(modifydate) FROM scormtrackings WHERE 
bundleid=@bundleid AND userid=u.userid),'') AS LastAccessed,

(...)

???

更新:我已经尝试了所有这些东西,返回'',0,1,而不是值为null,但它仍然不起作用,我想知道问题是否与Repeater有关?

相关问题:

  

Why does my repeater keep crashing on Eval(NULL) values?

6 个答案:

答案 0 :(得分:10)

您可以使用COALESCE函数来避免获取空值。基本上它从列表中返回第一个非空值。

SELECT COALESCE(dateField, '') FROM Some_Table

这是ANSI标准,但我注意到它在Access SQL中不可用。

答案 1 :(得分:3)

您可以使用CASE:

CASE WHEN MyField IS Null THEN ''
ELSE MyField
End As MyField

答案 2 :(得分:2)

select max(isnull(modifydate, "default date") from scormtrackings where...
只要至少有一行满足where子句,

就会工作,否则你仍然会得到NULL

select IsNull( max(modifydate), "default_date") from scormtrackings where ...

应该适用于所有情况

答案 3 :(得分:0)

select max(isnull(Date,"default date")) .....

答案 4 :(得分:0)

这也有效......讨厌承认我经常使用它!!

声明@LastAccessed varchar(30)

从scormtrackings

中选择@LastAccessed = max(modifydate)

设置@LastAccessed = isnull(@LastAccessed,'')

选择@LastAccessed作为LastAccessed

答案 5 :(得分:0)

您可以使用NVL

NVL(<possible null value>,<value to return when arg1 is null>)