这个神秘的SQL输出(使用MariaDB)的原因是什么?

问题描述:

这是一个查询我输入,诚然随机的调整,到测试盒在网站SQLZoo这个神秘的SQL输出(使用MariaDB)的原因是什么?

SELECT title || 'fo' 
FROM movie 
WHERE title IS NOT NULL 
AND title like '%he%'; 

,并返回不同寻常的输出,看起来像这样:

title || fo 
-------------------- 
0 
1 
1 
1 
1 
1 
1 
/* etc etc just 0's and 1's */ 

而如果我只需使用以下查询:

SELECT title 
FROM movie 
WHERE title IS NOT NULL 
AND title like '%he%'; 

那么我将GE里边反非常合理的输出我的预期:

title 
-------------------- 
Gone with the End 
Dr. doLittle 
Con Air. 
/* et etc more movi */ 

所以我认为这个网站的后端使用了一些叫做MariaDB的东西(可能是MySQL的一个分支? )。

为什么我只能通过连接标题和字符串来获得0's1's的输出?

准确地说,这是第6个 - 电影“卡萨布兰卡”的身份证是什么。 谢谢

+1

MySQL正在返回'title ||的真/假值。 'fo'' – 2014-10-20 20:04:41

+0

@MikeW - 阿gotcha!谢谢 !!! – Coffee 2014-10-20 20:05:16

+0

MySQL中的连接是'CONCAT(title,'fo')' – Barmar 2014-10-20 20:15:15

默认情况下,||是逻辑or操作 - 不是字符串连接。因此,您的选择是:

select (title OR fo) 

它只是检查其中一个是否为“真”(非零)。

运营商的列表是here

您可以通过设置模式PIPES_AS_CONCAT(请参阅here)来更改此行为。