XAMPP phpMyAdmin中使用||运算符进行字段拼接不生效问题
问题根源
你遇到的||运算符拼接字段失效的核心原因是不同数据库对||运算符的默认定义存在差异:
- 仅PostgreSQL、Oracle等少数数据库默认将
||作为字符串拼接运算符;MySQL、SQL Server等绝大多数主流数据库中,||默认是逻辑或运算符。 - 你用int类型的age、id做
||运算时,数据库会直接执行布尔逻辑判断,返回0/1的运算结果,自然和你要的字符串拼接结果不符。哪怕是varchar类型的字段做运算,数据库也会先尝试将字符串转为数值再做逻辑判断,所以也会出现同类问题。
解决方案
优先推荐通用兼容写法
绝大多数主流数据库都原生支持CONCAT()函数实现字符串拼接,自动处理不同数据类型转字符串的逻辑,不需要额外修改配置,兼容性最好,你的语句直接修改为:
SELECT id, name, age, CONCAT(age, id) FROM myTable;
即可得到你预期的拼接结果。
特定数据库的额外方案
- 如果你使用MySQL,一定要用
||做拼接的话,可执行语句SET sql_mode = PIPES_AS_CONCAT;临时修改SQL模式,让||按拼接逻辑执行,该配置重启数据库后会失效,需要永久生效的话修改数据库配置文件中的sql_mode参数即可。 - 如果你使用SQL Server,也可以用
+运算符做拼接,注意要手动把数值类型转成字符串,避免变成数值加法运算:
SELECT id, name, age, CAST(age AS VARCHAR) + CAST(id AS VARCHAR) FROM myTable;
内容的提问来源于stack exchange,提问作者ananya
相关产品推荐
相关产品推荐

