MYSQL IF (expr1, expr2, expr3), но я не хочу никакого expr3 (если expr3, то ничего не выводить

0

Как говорится в заголовке, мне просто нужен вывод, если соответствие if, если оно не соответствует, тогда я не хочу никакого вывода.

В настоящее время у меня есть это, но он дает ошибку, очевидно,

...rFormat=IF(ISNULL(rFormat), VALUES(rFormat),UNCHANGED)…

Я огляделся http://dev.mysql.com/doc/refman/5.4/en/control-flow-functions.html, но не узнал, как это сделать.

Этот вопрос относится к Обновление только поля MYSQL, если поле содержит null или 0

Это используется в контексте: (как видно из приведенного выше URL)

………
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);
Теги:

3 ответа

2
Лучший ответ

Вы можете просто сделать

IF(ISNULL(rFormat), VALUES(rFormat), rFormat)

Я не уверен, что вы пытаетесь достичь, вызвав VALUES() на этом этапе.

  • 0
    Это часть длинного запроса, как показано в этом другом вопросе, который я выложил ранее, stackoverflow.com/questions/1837912/… Я не хочу выводить rFormat для expr3, так как тогда он перезапишет то, что уже находится в поле, что Я не хочу
  • 0
    Нет проблем. Ответ Грега намного лучше, чем мой!
Показать ещё 3 комментария
2

Попробуйте следующее:

rFiles = COALESCE (existingColumnValue, '$ newValue')

COALESCE возвращает первое ненулевое значение. Обратите внимание, что вам понадобятся кавычки вокруг $newValue, если это строка, и не забывайте бежать. Вы не будете использовать кавычки вокруг имени столбца (existingColumnValue). Если вы также ищете строки, у которых (INT) 0 значение равно NULL, вы можете попробовать следующее:

rFiles = CASE existingColumnValue КОГДА NULL THEN '$ newValue' КОГДА 0 ТОГДА '$ newValue' ELSE existingColumnValue КОНЕЧНЫЙ СЛУЧАЙ

Мне пришлось изменить имена столбцов, чтобы я мог лучше выразить это решение. Надеюсь, вы все еще понимаете. Я предполагал, что $newValue не является другим столбцом в базе данных, но переменная передается из вашего script.

2

Просто используйте WHERE rFormat IS NULL вместо IF.

  • 0
    Это не работает в запросе, который я использую в: stackoverflow.com/questions/1837912/…
  • 0
    Можете ли вы привести пример того, чего вы пытаетесь достичь?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню