检查字段的值并更新它

时间:2011-08-18 18:49:13

标签: database vb.net sql-server-2005

我对检查数据库中的值有点困惑。我想要做的是看看是否存在如下的元组:

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

invoice_num不为空,它为空:“”。

我想要的是查找是否存在这样的条目,其中invoice_num为“”并使用输入到文本框中的数字进行更新。我对SQL中的语句和案例有点困惑,所以如果有人能指出我正确的方向,那就太棒了!

3 个答案:

答案 0 :(得分:1)

如果您只遇到SQL问题,并且根据列的数据类型,this应该可以帮助您。如果你需要where子句中的整个元组,它将是:

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

答案 1 :(得分:1)

查找此类行(或元组)的一种方法是查询,如:

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

或者如果空字符串有问题,请关注@ Ben的建议。然后你可以做update

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

但是,这种方法的问题在于,如果您没有使用主键在update语句中选择行,则可以更新多行(类似地,select语句可以返回多行)。因此,您必须查看数据库模式并确定表的主键列,并确保在更新的WHERE子句中使用所有主键列。如果你这样做

UPDATE tablename SET invoice_num = value WHERE invoice_num = ""

将更新具有该invoice_num值的所有行,这可能不是您想要的。

答案 2 :(得分:0)

如果您可以在变量上传递要更新的值(让我们称之为@RealInvoiceNum),那么UPDATE语句应为:

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