2017-07-17 23 views
0

我有一個ASP經典網頁下面的腳本連接到MS SQL 2012:在傳統的ASP運行T-SQL查詢沒有返回NULL記錄

<% 
Set Conn = Server.CreateObject("ADODB.Connection") 
Set RS = Server.CreateObject("ADODB.RecordSet") 
Conn.Open SQLCFG 
RS.CacheSize = 40 

RS.Open "SELECT * FROM orders WHERE (final_trackingnumber = '' OR final_trackingnumber = NULL OR final_trackingnumber LIKE '%BACK%') AND status <> 'pp' ORDER BY dt DESC", Conn, adOpenKeyset,adLockReadOnly 
%> 

<table width="100%" cellpadding=7> 
    <tr> 
    <td class='theading'></td> 
     <td class='theading'>Invoice Number</td> 
     <td class='theading'>Billed to</td> 
     <td class='theading'>Date Ordered</td> 
     <td class='theading'>Shipping Type</td> 
     <td class='theading'>Tracking ID</td> 
     <td class='theading'>Status</td> 
    </tr> 
    <tr> 
<% 

Do While Not RS.EOF 

%> 
    <tr> 
     <td align=center bgcolor="<%=bcolor%>" class="trow"><font face="arial" size=2><a href="process-view.asp?aid=<%=RS("aid")%>&oid=<%=RS("oid")%>"><B>View Order</b></A></td> 
     <td bgcolor="<%=bcolor%>" class="trow"><%= RS("oid") %></td> 
     <td bgcolor="<%=bcolor%>" class="trow"><%= RS("b_name") %></td> 
     <td bgcolor="<%=bcolor%>" class="trow"><%= RS("dt") %></td> 
     <td bgcolor="<%=bcolor%>" class="trow"><%= RS("shippingtype") %></td> 
     <td bgcolor="<%=bcolor%>" class="trow"><%= RS("final_trackingnumber") %></td> 
     <td bgcolor="<%=bcolor%>" class="trow"></td>  
    </tr> 

<% 
RS.MoveNext 
Loop 
%> 
</table> 
<% 
Rs.Close 
Conn.Close 
%> 

我可以查詢到在MS SQL管理正常運行工作室,但是當我在ASP頁面上運行它時,我不返回任何具有「final_trackingnumber = NULL」的記錄。在查詢中需要返回列中有NULL的記錄嗎?下面的建議聲明我需要使用final_trackingnumber IS NULL,但ADO不支持這一點。

回答

5

它必須是「爲空」,如下

final_trackingnumber is NULL 
+0

我也嘗試以前和腳本將無法運行。我嘗試了一個非常簡單的查詢:'code' RS.Open「SELECT * FROM orders WHERE final_trackingnumber is NULL ORDER BY dt DESC」,Conn,adOpenKeyset,adLockReadOnly'code'。我懷疑這可能是格式化查詢ADO的問題?我得到的唯一錯誤是「頁面無法顯示,因爲發生了內部服務器錯誤」 –

0

在TSQL,或檢查時,如果值爲NULL不,你不能使用=<>比較操作。他們將始終返回一個不真實的值(未知或錯誤)。

這最好的計算策略是myColumn IS NULL同樣,如果你所檢查的一些列不等於值一定要檢查NULL以及

WHERE (myValue IS NOT NULL) AND (myValue <> someOtherValue)