SQLite 中是否可以进行 try/catch 类型更新?

发布于 2024-10-30 19:41:59 字数 347 浏览 2 评论 0原文

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

但有时该 DateTime 并不存在。我想知道是否有任何方法可以让它动态尝试,那么

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

这可能是不可能的,特别是因为 'DateTime` 是一个字符串,但想知道是否有某种方法可以做到这一点。

我曾想过采用 DateTime 的前 7 个字符并进行匹配,但这可能不够精确。

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

Sometimes that DateTime will not exist, though. I'm wondering if there's any way that I can have it dynamically attempt then

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

This is probably not possible, especially since 'DateTime` is a string, but wondered if there might be some way of doing it.

I had thought of taking the first 7 characters of the DateTime and having that match, but that's probably not quite precise enough.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

难忘№最初的完美 2024-11-06 19:41:59

CASE 表达式听起来可以做你想做的事。

CASE 表达式发挥作用
类似于其他中的 IF-THEN-ELSE
编程语言。

出现在的可选表达式
CASE 关键字和第一个关键字之间
WHEN 关键字称为“基础”
表达。有两种基本形式
CASE 表达式的:那些带有
基本表达和没有基本表达的表达。

在没有基本表达式的 CASE 中,
每个 WHEN 表达式都会被求值并且
结果被视为布尔值,
从最左边开始
继续向右。结果
CASE 表达式是求值
THEN 表达式的
对应第一个 WHEN
计算结果为 true 的表达式。或者,
如果没有 WHEN 表达式
评估为 true,结果为
评估 ELSE 表达式,如果
任何。如果没有 ELSE 表达式
并且没有一个 WHEN 表达式是
true,则总体结果为 NULL。

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

The CASE expression sounds like it could do what you want.

A CASE expression serves a role
similar to IF-THEN-ELSE in other
programming languages.

The optional expression that occurs in
between the CASE keyword and the first
WHEN keyword is called the "base"
expression. There are two basic forms
of the CASE expression: those with a
base expression and those without.

In a CASE without a base expression,
each WHEN expression is evaluated and
the result treated as a boolean,
starting with the leftmost and
continuing to the right. The result of
the CASE expression is the evaluation
of the THEN expression that
corresponds to the first WHEN
expression that evaluates to true. Or,
if none of the WHEN expressions
evaluate to true, the result of
evaluating the ELSE expression, if
any. If there is no ELSE expression
and none of the WHEN expressions are
true, then the overall result is NULL.

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

甚是思念 2024-11-06 19:41:59

这是你想要的吗?

UPDATE Table
SET Value = 5 
WHERE DateTime =
       ( SELECT MIN(DateTime)
         FROM Table
         WHERE DateTime >= '03:42:34'
       )
;

Is this what you want?

UPDATE Table
SET Value = 5 
WHERE DateTime =
       ( SELECT MIN(DateTime)
         FROM Table
         WHERE DateTime >= '03:42:34'
       )
;
时光匆匆的小流年 2024-11-06 19:41:59

我以一种简单的方式工作,我觉得自己很愚蠢,因为没有考虑到最初的情况:

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

I got this working in a straightforward way I feel silly for not thinking of originally:

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')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文