SQLite中如何用fname、lname、mname正确更新patients表的fullname列?
SQLite更新patients表fullname列的正确方法
你遇到的问题是因为SQLite里**+是算术运算符**,不是字符串连接符。当你用lname+','+fname+','+mname时,SQLite会尝试把这些字符串转换成数字,转换失败就会当作0处理,所以最终fullname被设成了0。
正确的字符串连接方式有两种:
方法一:用||连接符
这是SQLite原生的字符串连接语法,直接用||替代+即可:
UPDATE patients SET fullname = lname || ',' || fname || ',' || mname;
方法二:用CONCAT()函数
SQLite 3.30.0及以上版本支持CONCAT()函数,它会自动忽略空值(如果某列是NULL,不会额外添加多余的逗号):
UPDATE patients SET fullname = CONCAT(lname, ',', fname, ',', mname);
处理空值的优化
如果mname可能为空,不想出现末尾多余的逗号,可以用COALESCE()把空值替换成空字符串:
UPDATE patients SET fullname = lname || ',' || fname || COALESCE(',' || mname, '');
内容的提问来源于stack exchange,提问作者Fritz
相关产品推荐
相关产品推荐

