Возможно ли иметь обновления типа try / catch в SQLite? - PullRequest
0 голосов
/ 05 апреля 2011
UPDATE Table SET Value = 5 WHERE DateTime = '03:42:34';

Иногда этого DateTime не существует.Мне интересно, есть ли какой-нибудь способ, которым я мог бы сделать это динамически, пытаясь затем

UPDATE Table SET Value = 5 WHERE DateTime = '03:42:35';

Это, вероятно, невозможно, тем более, что DateTime является строкой, но удивлялся, может ли быть какой-то способ сделатьэто.

Я думал о том, чтобы взять первые 7 символов DateTime и получить это совпадение, но это, вероятно, не совсем точно.

Ответы [ 3 ]

1 голос
/ 05 апреля 2011

Выражение CASE звучит так, как будто оно может делать то, что вы хотите.

Выражение CASE выполняет роль, аналогичную IF-THEN-ELSE в других языках программирования.

НеобязательныйВыражение, которое встречается между ключевым словом CASE и первым ключевым словом WHEN, называется «базовым» выражением.Существуют две основные формы выражения CASE: с базовым выражением и без.

В CASE без базового выражения каждое выражение WHEN оценивается, а результат обрабатывается как логическое, начиная с крайнего левого.и продолжая направо.Результатом выражения CASE является оценка выражения THEN, которое соответствует первому выражению WHEN, которое оценивается как true.Или, если ни одно из выражений WHEN не имеет значения true, результат вычисления выражения ELSE, если оно есть.Если нет выражения ELSE и ни одно из выражений WHEN не является истинным, тогда общий результат будет равен NULL.

http://www.sqlite.org/lang_expr.html

0 голосов
/ 05 апреля 2011

Я получил это, работая прямо, я чувствую себя глупо, потому что не думал о первоначальном:

UPDATE Table SET Value = 5 WHERE DateTime BETWEEN datetime('2020-03-21 03:42:35', '-1 second') and datetime('2020-03-21 03:42:35', '+1 second')

0 голосов
/ 05 апреля 2011

Это то, что вы хотите?

UPDATE Table
SET Value = 5 
WHERE DateTime =
       ( SELECT MIN(DateTime)
         FROM Table
         WHERE DateTime >= '03:42:34'
       )
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...