连接在两台服务器上的行为不同

Ala*_* C. 5 mysql

我有两台服务器(不是彼此的主/从),每台都运行 MySQL 5.1.71-log。

一台服务器 1(恰好在美国),以下查询返回良好的结果:

select distinct(devicemode || ' - ' || model || ' - ' || version) as a from <TABLE1>, <TABLE2> where <TABLE1>.<FKEY> = <TABLE2>.key and <TABLE1>.key = 1234 order by devicemode ,model,version;
Run Code Online (Sandbox Code Playgroud)

结果如下:

US - MicroMaxx - 30.80.306.024
Run Code Online (Sandbox Code Playgroud)

当在服务器 2(恰好在英国)上运行相同的查询时,我得到不同的结果:

0
Run Code Online (Sandbox Code Playgroud)

如果我将查询更改为:

select distinct(concat(devicemode, ' - ', model,' - ', version) as a from <TABLE1>, <TABLE2> where <TABLE1>.<FKEY> = <TABLE2>.key and <TABLE1>.key = 1234 order by devicemode ,model,version;
Run Code Online (Sandbox Code Playgroud)

在两台服务器上返回相同的结果:

US - MicroMaxx - 30.80.306.024
Run Code Online (Sandbox Code Playgroud)

知道为什么会有区别吗?

谢谢

艾伦

ype*_*eᵀᴹ 6

两台服务器很可能有不同的SQL_MODE设置。

一个已经PIPES_AS_CONCAT定义,另一个没有。没有此设置的服务器将||("pipes") 视为同义词OR而不是字符串连接运算符。