mysql 字符串求和_mysql字段值(字符串)累加

mysql在更新记录时,需要在原来的值上在累加新的值。

例如原来有条记录:

id

country

a784829a-c0dc-4cb6-88a9-8c376fab83a6

USA

现在更新更新country字段:在原值的基础上添加“$+$UK”,使其变为如下值:

id

country

a784829a-c0dc-4cb6-88a9-8c376fab83a6

USA$+$UK

但是,在更新时,并不知道该记录的原值,也不希望通过mysql查询来获取原值(实际上,并不关心原值是多少,只需要在原值基础上添加新值即可)。

最后,通过如下sql来实现:

insert into video(id, country) values(a784829a-c0dc-4cb6-88a9-8c376fab83a6, USA) on duplicate key update country=CONCAT(country,values(country))

--------------------------------------------------------------------------------------------

update:

如果原值为NULL,上述SQL语句将无法更新字段值(但mysql也不会报错)。

id

country

a784829a-c0dc-4cb6-88a9-8c376fab83a6

NULL

即:针对以上记录,执行上述SQL后,country 值为NULL;

但如果值为“”(空字符串)而非NULL,上述SQL可以正常运行:

id

country

a784829a-c0dc-4cb6-88a9-8c376fab83a6

执行上述SQL后,country = "USA"。

结论:在create table时,需指定该字段NOT NULL,同时设置default 为""即可。

mysql在更新记录时,需要在原来的值上在累加新的值。 例如原来有条记录: id country a784829a-c0dc-4cb6-88a9-8c376fab83a6 USA 现在更新更新country字段:在原值的基础上添加“$+$UK”,使其变为如下值: id country a784829a-c0dc-4cb6-88a9-8c376fab83a6 USA$+$UK 但是,在更新时,并不知道该记录的原值,也不希望通过mysql查询来获取原值(实际上,并不关心原值是多少,只需要在原值基础上添加新值即可)。 最后,通过如下sql来实现: insert into video(id, country) values(a784829a-c0dc-4cb6-88a9-8c376fab83a6, USA) on duplicate key update country=CONCAT(country,values(country)) -------------------------------------------------------------------------------------------- update: 如果原值为NULL,上述SQL语句将无法更新字段值(但mysql也不会报错)。 id country a784829a-c0dc-4cb6-88a9-8c376fab83a6 NULL 即:针对以上记录,执行上述SQL后,country 值为NULL; 但如果值为“”(空字符串)而非NULL,上述SQL可以正常运行: id country a784829a-c0dc-4cb6-88a9-8c376fab83a6 执行上述SQL后,country = "USA"。 结论:在create table时,需指定该字段NOT NULL,同时设置default 为""即可。
经验分享 程序员 微信小程序 职场和发展