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

MySQL中SELECT 'a' 'b' 'c'为何自动拼接成'abc'?

MySQL中SELECT 'a' 'b' 'c'返回'abc'的原因解析

这是MySQL独有的字符串常量隐式拼接扩展语法,不属于标准SQL范畴。当你在SELECT子句里用空格分隔多个字符串常量时,MySQL会自动将它们拼接成一个完整字符串:

  • 结果列名默认取第一个字符串'a',因为MySQL会把第一个字符串当作拼接后结果的隐式别名;
  • 最终值'abc'就是三个字符串常量被隐式拼接后的结果。

为什么中间加数字或列会报错?

  • 插入数字时(比如SELECT 'a' 1 'c' FROM dual;),MySQL会把数字1解析成前面字符串的别名,但别名的定义规则不允许这种直接跟在字符串后的写法(必须用AS关键字显式声明),因此触发语法错误;
  • 插入数据库列时(比如SELECT 'a' username 'c' FROM users;),username会被当作前面字符串的别名,但它本身是列名,既不符合别名的语法规则,后续的'c'也无法被正确解析,所以同样报错。

如果想明确拼接字符串,建议使用标准SQL的CONCAT()函数,比如:

SELECT CONCAT('a', 'b', 'c') AS combined_str FROM dual;

写法更清晰,也能兼容其他数据库。

内容的提问来源于stack exchange,提问作者andy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:19:50