回答

收藏

如果值不为null的SQL查询更新数据库?

技术问答 技术问答 196 人阅读 | 0 人回复 | 2023-09-14

我有一张桌子,大约有17个字段。我需要在此表中执行频繁的更新。但是问题是 每次我可能只更新几个字段
: s' m& }# w4 c! B。在这种情况下,编写查询以进行更新的最佳方法是什么?我正在寻找一个选项,其中 值仅在不为null时才更新 。
4 {9 c& \4 c5 v! i( v例如,我在数据库Say A,B,C,D中有四个字段。用户更新say- n) W* S2 g5 K2 _+ y3 W" @) y
D的值。所有其他值保持不变。因此,我需要一个更新查询,该查询仅更新D的值,而其他值保持不变。因此,如果我将a,b和c设置为null,并使用用户提供的值d,则我想编写一个更新查询,该查询仅将d的值更新为a,b和c为null。这是可以实现的吗?
1 e% V' b/ k* R- }7 Q我正在使用SQLite数据库。9 _- ~0 A" t8 n: e2 g, i
有人可以给它照亮吗?. \( N9 `/ T6 x7 h2 W" R! U
                5 y8 c) y9 _" W& W* G$ X# N
解决方案:
8 H+ e& _5 P+ [" {5 W1 T               
$ R: Q$ T2 f2 C, a8 e6 J4 `6 p3 t* ^% {/ Q* J, d' v

) u( V) J$ ^4 u) }: |0 z- u+ h5 z                在不了解数据库的情况下,很难做到具体。在SQL Server中,语法类似于…
: ]3 [) ^2 Y" A1 h- @UPDATE MyTable 3 x2 O: d! E0 l! L( j" E& B( D+ N
SET 4 A, c5 Y5 B& @7 i  c! N+ s
        Field1 = IsNull(@Field1, Field1),
+ W( B- n8 s+ @% t        Field2 = IsNull(@Field2, Field2),
: |! {' T& Z" I! k( j) b- x  p" P* @        Field3 = IsNull(@Field3, Field3)) |- `7 T: E5 j
WHERE
" V/ r( D: a+ c  b     
$ {# n( j8 i, U& Q编辑
# M0 V3 w. d4 ^3 M% j由于您指定了SQLLite …用替换我的IsNull函数,COALESCE() 或交替查看该IfNull函数。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则