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

时间:2014-10-20 20:01:16

标签: mysql sql mariadb

这是我在网站SQLZoo的测试框中输入的一个查询,无可否认地随机调整:

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%';

然后我会得到我预期的非常合理的输出:

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

所以我认为这个网站的后端使用了一个名为MariaDB的东西(也许是MySQL的一个分支?)。

为什么我只获得0's1's的输出,只是将标题与字符串连接起来?

确切地说,这是第6部 - 电影“卡萨布兰卡”的内容是什么。 谢谢

1 个答案:

答案 0 :(得分:3)

默认情况下,||是逻辑or操作 - 不是字符串连接。所以,你的选择真的是:

select (title OR fo)

只检查一个或另一个是“真”(非零)。

运营商列表为here

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