我試圖選擇我的表中的一些值,但是當Invoicedate
爲空時我得到異常請幫助我!如何通過null值在plsql中選擇
我的代碼:
query="select vend_name,vend_no from account where inv_date = '"+Invoicedate+"' or vend_no = "+Vendorno+" LIMIT 500";
請提供任何可能的答案給我。
我試圖選擇我的表中的一些值,但是當Invoicedate
爲空時我得到異常請幫助我!如何通過null值在plsql中選擇
我的代碼:
query="select vend_name,vend_no from account where inv_date = '"+Invoicedate+"' or vend_no = "+Vendorno+" LIMIT 500";
請提供任何可能的答案給我。
這是因爲在你的代碼中它將變成inv_date = 'null'
而不是inv_date is null
。
你需要做的inv_date "+(Invoiceddate==null?"is null":"= '"+Invoiceddate+"'")+" or
一般來說,這是一個糟糕的方式做事情,雖然你是開放的SQL注入攻擊和各種其他類似問題。
使用PreparedStatement
而這一切會爲你處理:
PreparedStatement query = connection.prepareStatement("select vend_name,vend_no from account where inv_date = ? or vend_no = ? LIMIT ?");
query.setDate(1, Invoicedate);
... etc
還請注意,您應該遵循變量命名等了Java風格的約定,它會幫助人們與您的代碼工作。
另請注意'that = NULL'將不會查找空日期請參見[空值](http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements005.htm#SQLRF30037) – GrahamA
確實,比較應該可能是「爲空」。 –
你能否詳細解釋你的需求 – SpringLearner
當然你在傳遞null的時候會得到一個異常。你在期待什麼? –
IIRR Oracle的正確拼寫是'foo is NULL' –