2011-08-18 50 views
0

我對檢查數據庫中的值有點困惑。我想要做的是看看是否存在以下元組:檢查字段的值並更新它

job_num |item_code |invoice_num 
------------------------------------ 
94834  |EFC-ASSOC-01| 

invoice_num不爲空,它爲空:「」。

我想要的是找到這樣的條目是否存在,其中invoice_num是「」並使用輸入到文本框中的數字進行更新。我對SQL中的語句和案例有點困惑,所以如果有人能指出我正確的方向,那會很棒!

回答

1

一個辦法,找出這樣的行(或元組)將是一個查詢,如:

SELECT job_num, item_code, invoice_num 
FROM tablename 
WHERE job_num = 94834 AND item_code = "EFC-ASSOC-01" AND invoice_num = "" 

或關注@本的建議如果空字符串是一個問題。然後,你可以做一個update

UPDATE tablename SET invoice_num = ? WHERE job_num = ......... 

但是,這種方法的問題是,如果你不使用主鍵來選擇更新語句行,多行可以得到更新(同樣地, select語句可以返回多行)。因此,您必須查看數據庫模式並確定表的主鍵列,並確保在更新的WHERE子句中使用所有主鍵列。如果你只是做

UPDATE tablename SET invoice_num = value WHERE invoice_num = "" 

具有該值invoice_num的所有行將被更新,這可能不是你想要的。

+0

好,主鍵的arent一個問題,工號和項目代碼是關鍵。我認爲這個會做,我會給它一個機會。 – MGZero

1

如果您只有SQL方面的問題,並且根據列的數據類型,this應該會對您有所幫助。如果您需要整個數組的where子句中它看起來像:

SELECT * FROM MyTableName Where job_num = 94834 AND item_code = 'EFC-ASSOC-01' AND datalength(invoice_num) = 0 
0

如果你可以傳給你想在一個變量更新值(我們稱之爲@RealInvoiceNum),那麼UPDATE的說法應該是這樣的:

UPDATE YourTable 
SET invoice_num = @RealInvoiceNum 
WHERE job_num = @JobNum AND invoice_num = ''