mysql update varchar字段时,传入字符串“0”update后该字段未变成0而是空
时间: 2023-11-27 20:22:31 浏览: 190
这是因为在 MySQL 中,当你将一个空字符串('')或者非数字字符串(比如 'abc')插入到一个数字类型的字段中,MySQL 会自动将它转化为 0。但是,当你将字符串 '0' 插入到一个 VARCHAR 类型的字段中,MySQL 不会将它转化为 0,而是将它当做一个普通字符串来对待。因此,如果你想要将一个 VARCHAR 类型的字段更新为 0,你需要将字符串 '0' 明确地转化为数字类型,可以使用如下语句:
```
UPDATE table_name SET varchar_column = 0 WHERE some_condition;
```
这样,你就可以将 VARCHAR 类型的字段更新为数字 0 了。
相关问题
请问能否用MYSQL存储过程实现 已知入参'[{"sName":"姓名1"},{"sName":"姓名2"},{"sName":"姓名3"}]' 字符串, 学生表student(`sName` varchar(100) COMMENT '姓名',`iSocre` INT(11) COMMENT '成绩') 用循环方式,根据学生姓名将成绩 +20分
可以使用MYSQL存储过程实现该功能,以下是示例代码:
DELIMITER $$
CREATE PROCEDURE update_scores(IN student_list TEXT)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE student_name VARCHAR(100);
DECLARE student_count INT DEFAULT JSON_LENGTH(student_list);
WHILE i < student_count DO
SET student_name = JSON_EXTRACT(student_list, CONCAT('$[', i, '].sName'));
UPDATE student SET iSocre = iSocre + 20 WHERE sName = student_name;
SET i = i + 1;
END WHILE;
END $$
DELIMITER ;
调用该存储过程时,需要将学生列表以JSON格式传入,例如:
CALL update_scores('[{"sName":"姓名1"},{"sName":"姓名2"},{"sName":"姓名3"}]');
该存储过程会循环遍历学生列表,根据学生姓名更新成绩字段。
阅读全文