MySQL中如何使用SET合并两个值?VARCHAR赋值合并异常咨询
问题解答
这不是MySQL的正常行为,而是你误用了字符串拼接的方式!
问题原因
在MySQL里,+是算术加法运算符,而非字符串连接符。当你尝试用"This is a test" + id时,MySQL会自动做类型转换:它会把字符串"This is a test"尝试转换成数值,但这个字符串无法解析为有效数字,所以会被当作0处理。最终运算结果就变成了0 + id,也就是id的值,文本部分自然就“消失”了。
正确的字符串拼接方式
有两种常用的正确方法可以实现字符串和数值的拼接:
- 使用
CONCAT()函数(推荐,兼容性最好)
这是MySQL中最通用的字符串拼接方式,不管版本都能正常工作:
DECLARE id INTEGER; DECLARE action VARCHAR(100); SET id = (SELECT MAX(ID) FROM Test.Test); -- 可以在文本和id之间加空格让结果更美观 SET action = CONCAT("This is a test ", id);
- 使用
||运算符(MySQL 8.0.19+适用)
如果你的MySQL版本是8.0.19及以上,可以通过设置sql_mode开启PIPES_AS_CONCAT,让||作为字符串连接符使用:
-- 先设置SQL模式 SET sql_mode = PIPES_AS_CONCAT; DECLARE id INTEGER; DECLARE action VARCHAR(100); SET id = (SELECT MAX(ID) FROM Test.Test); SET action = "This is a test " || id;
内容的提问来源于stack exchange,提问作者Jeffrey Lionel van Houdt
相关产品推荐
相关产品推荐

