sql語句 update字段null不能用is null問題
sql語句 update字段null不能用is null
update字段為 null 值時,
要用
set column = null,
而不是
set column is null
? UPDATE tableA set 字段a is null WHERE字段b = 條件;
例:
mysql> UPDATE t SET col3 is null WHERE col1 = 'a'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'is null WHERE col1 = 'a'' at line 1
〇 UPDATE tableA set 字段a = null WHERE字段b = 條件;
例:
mysql> UPDATE t SET col3 = null WHERE col1 = 'a'; Query OK, 1 row affected (0.03 sec)
update更新數(shù)據(jù)時null字段是否更新進數(shù)據(jù)庫總結
情況一:不需要更新進數(shù)據(jù)庫
方法1:直接用sql語句方式,需要更新哪個字段就set xxclounm 即可
方法2:使用mybatis帶的方法 updateById(Entry entry),傳入entry對象只設置需要更新字段即可。
解析:mybatis-plus在update時對null字段有三種處理策略分別是:
IGNORED
:0 忽略NOT_NULL
:1 非 NULL,默認策略NOT_EMPTY
:2 非空
默認策略是忽略null字段,所以只需要將entry中不需要更新的字段不做處理即可。注意:如果entry中字段設置為空字符串" " 則會更新進數(shù)據(jù)庫
方法3:使用updateWapper,其實和方法2原理一樣 如下例子只更新age字段 ,同樣受更新策略影響:
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("name","rhb"); User user = new User(); user.setAge(18); userMapper.update(user, updateWrapper);
情況二:需要更新進數(shù)據(jù)庫 (推薦方法3)
方法1:直接用sql語句方式,需要更新哪個字段就set xxclounm 即可
方法2:使用mybatis帶的方法 updateById(Entry entry),傳入entry對象只設置需要更新字段即可。另外在entry類中需要更新null的字段上加上注解updateStrategy 如下面例子:
? ? /** ? ? ?* 單位 ? ? ?*/ ? ? @TableField(value = "UNIT", updateStrategy = FieldStrategy.IGNORED) ? ? private String unit;
或者設置全局更新策略(按需要設置單個字段或者全局)
# yml配置 mybatis-plus: ? global-config: ? ? db-config: ? ? ? field-strategy: not_empty
方法3:使用updateWapper,不受更新策略影響。推薦此方法,設置完策略后別人在不知情情況下可能會在不想設置null時將你設置的字段更新為空
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.eq(User::getName, "rhb").set(User::getAge, null); Integer rows = userMapper.update(null, lambdaUpdateWrapper);
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
mysql百萬數(shù)據(jù)表加索引優(yōu)化的方法
在大數(shù)據(jù)時代,隨著數(shù)據(jù)量的快速增長,對數(shù)據(jù)庫的索引優(yōu)化變得尤為重要,本文主要介紹了mysql百萬數(shù)據(jù)表加索引優(yōu)化的方法,感興趣的可以了解一下2024-02-02homeassistant數(shù)據(jù)存儲到mysql數(shù)據(jù)庫方式
這篇文章主要介紹了homeassistant數(shù)據(jù)存儲到mysql數(shù)據(jù)庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12mysql數(shù)據(jù)庫自動添加創(chuàng)建時間及更新時間
在實際應用中我們時常會需要用到創(chuàng)建時間和更新時間這兩個字段,下面這篇文章主要給大家介紹了關于mysql數(shù)據(jù)庫自動添加創(chuàng)建時間及更新時間的相關資料,需要的朋友可以參考下2022-05-05