如果返回的coldfusion查詢結果集中的某一列有NULL,我們如何檢查這個列的值是否爲NULL?如何處理來自ColdFusion查詢的空值?
我們應該說只是<cfif queryname.columnname[i] EQ ''>
或<cfif queryname.columnname[i] eq 'NULL'>
?
如果返回的coldfusion查詢結果集中的某一列有NULL,我們如何檢查這個列的值是否爲NULL?如何處理來自ColdFusion查詢的空值?
我們應該說只是<cfif queryname.columnname[i] EQ ''>
或<cfif queryname.columnname[i] eq 'NULL'>
?
空值只會作爲查詢對象中的空字符串返回。
理想情況下,您可以使用數據庫的ifnull
(或類似的)方法在空值到達CF之前將空值轉換爲適當的值。
如果不是,他們回來作爲一個空字符串,所以你的第一個cfif
是正確的。
如果您使用的是oracle數據庫,則可以使用NVL方法並修改查詢以包裝列。
<cfset var nullstringvalue = "THELASTNAMEFIELDISNULL" />
<cfquery name="lastnamelookup" ....>
SELECT NVL(lastname, 'LASTNAMEISNULL') AS lastname
</cfquery>
<cfif lastnamelookup.lastname EQ nullstringvalue>
...do null case work...
</cfif>
訣竅是確定在這種情況下使用正確的假冒字符串,然後測試它。
同意。如果您需要從空字符串中區分真正的NULL值,則需要在查詢中執行該操作。 – davidcl 2009-10-31 19:59:22
有時我希望它不能像這樣工作。在某些情況下,NULL實際上可以是,意思是。 – 2009-11-03 18:55:36
是的,這意味着你已經完成了你的數據庫錯誤。 ;) – 2009-11-03 19:09:18