2011-08-18 51 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 = ''