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

标签 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 的一个分支?)。

为什么我只能通过将标题与字符串连接来得到 01 的输出?

准确的说是第6部——电影《卡萨布兰卡》的id是什么。 谢谢

最佳答案

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

select (title OR fo)

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

运算符列表是here .

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

关于mysql - 这个神秘的 SQL 输出(使用 MariaDB)的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473889/

相关文章:

mysql - 在预期条件的上下文中指定的非 bool 类型的表达式,

java - 如何从数据库表中获取数据并将该数据更新到 hibernate 中的另一个表中?我已经在 J​​SP 中完成,但我想在 Hibernate 中完成

mysql - 使用比较运算符时计数不正确

mysql - 将内部联接结果合并到一列

entity-framework - 由于EntityFramework版本不同,.NET Core生成警告

mysql - MariaDB 语法错误

html - 单选按钮的类型是什么?

字符串操作的Sql查询性能?

sql - 以列的形式返回结果的动态 SQL 查询

php - Laravel 6-MariaDB 10.1 : Illuminate\Database\QueryException : SQLSTATE[HY000] migration error