Проверка значения поля и его обновление - PullRequest
0 голосов
/ 18 августа 2011

Я немного запутался в проверке значений в базе данных. Что я хочу сделать, это посмотреть, существует ли такой кортеж, как следующий:

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

invoice_num не является нулевым, оно пустое: "".

Я хочу найти, существует ли такая запись, где invoice_num «», и обновить ее числом, введенным в текстовое поле. Я немного озадачен, если в SQL есть операторы и кейсы, так что если кто-то может указать мне правильное направление, это было бы здорово!

Ответы [ 3 ]

1 голос
/ 18 августа 2011

Один из способов найти такие строки (или кортежи) - запрос типа:

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 будут обновлены, что может не соответствовать вашим ожиданиям.

1 голос
/ 18 августа 2011

Если у вас проблемы только с SQL и в зависимости от типа данных столбца, это должно помочь вам.Если вам нужен весь кортеж в предложении where, он будет выглядеть так:

SELECT * FROM MyTableName Where job_num = 94834 AND item_code = 'EFC-ASSOC-01' AND datalength(invoice_num) = 0
0 голосов
/ 18 августа 2011

Если вы можете передать значение, которое вы хотите обновить, в переменную (давайте назовем ее @RealInvoiceNum), тогда оператор UPDATE должен быть таким:

UPDATE YourTable
SET invoice_num = @RealInvoiceNum
WHERE job_num = @JobNum AND invoice_num = ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...