You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL更新字段拼接字符串返回0问题求助:生成指定格式邮箱

修复UPDATE拼接字符串后字段全为0的问题

问题场景

需要更新sector表的email_empresa字段,生成规则为:nombre_jefe的首字母 + apellido_jefe完整值 + 后缀@simuladores.com.ar,但执行原语句后所有行的email_empresa都变成了0。

原错误语句

UPDATE sector SET email_empresa = (SUBSTR(nombre_jefe, 1, 1) || apellido_jefe || "@simuladores.com.ar");

问题原因

在MySQL中,||是逻辑或运算符,而非字符串拼接符。当你用||连接字符串时,MySQL会尝试将每个字符串转换为数字类型,转换失败则返回0,最终多个0进行逻辑或运算的结果还是0,因此字段被更新为0。

解决方案

方案1:使用MySQL官方推荐的CONCAT()函数(兼容所有版本)

CONCAT()函数专门用于字符串拼接,支持多个参数:

UPDATE sector 
SET email_empresa = CONCAT(SUBSTR(nombre_jefe, 1, 1), apellido_jefe, '@simuladores.com.ar');

方案2:修改SQL模式,让||作为拼接符(仅适合特定场景)

临时开启PIPES_AS_CONCAT模式(重启MySQL后失效):

SET sql_mode = 'PIPES_AS_CONCAT';

之后即可使用原语句的拼接写法执行更新:

UPDATE sector 
SET email_empresa = SUBSTR(nombre_jefe, 1, 1) || apellido_jefe || '@simuladores.com.ar';

若需永久生效,需修改MySQL配置文件(my.cnf或my.ini),在sql_mode中添加PIPES_AS_CONCAT,保存后重启MySQL服务。

验证结果

执行以下语句检查更新效果:

SELECT nombre_jefe, apellido_jefe, email_empresa FROM sector;

应得到如jgomez@simuladores.com.ar的预期格式。


内容的提问来源于stack exchange,提问作者Ariel Cholakian Saz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:03:18