MySQL:非ansi模式有什么好处?

标签 mysql sql ansi

因为我经常使用许多不同的数据库,所以我特意将 MySQL 切换到 ANSI 模式,以使我的代码保持一定的一致性。这样我就可以对列名和 || 使用双引号用于连接,这对大多数数据库来说是正常的(MSSQL,它似乎不使用 ||)。

除了兼容性之外,在 MySQL 中不切换到 ANSI 模式有什么好处吗?

最佳答案

来自 MySQL documentation :

ANSI
Equivalent to REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, and (as of MySQL 5.7.5) ONLY_FULL_GROUP_BY.



这些包含的前四种模式大多是次要的装饰性的东西,例如允许字符串连接的管道,以及忽略函数名和 ( 之间的空格。特点。从将 MySQL 代码移植到另一个数据库的角度来看,这些会很烦人,但需要进行相当小的更改。

然而,ONLY_FULL_GROUP_BY模式是另一回事。如果在 MySQL 中关闭此模式(如果 ANSI 被禁用,则会发生这种情况),则意味着您可以拥有 GROUP BY选择未出现在聚合或 GROUP BY 中的列的查询条款。这样的查询可能会在任何其他数据库上完全失败,也许除了 MariaDB。此外,如果您以 ONLY_FULL_GROUP_BY 的松懈编写所有查询模式禁用,那么如果您尝试将代码移植到另一个数据库,您可能会面临许多查询的重大重构。

我建议您坚持使用 ANSI 标准。在ONLY_FULL_GROUP_BY的情况下,坚持它只是良好的数据库实践,其他次要的外观要求是您可能已经在做的事情。

关于MySQL:非ansi模式有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45625788/

相关文章:

Mysql 找到购买了 X 但没有购买 Y 的客户

php - 日期未更新的 MySQL/PHP 更新查询

sql - 从函数 oracle 返回一个 varray

sql - MySQL 跳过一个子级别

sql - MySQL MATCH...AGAINST 有时会找到答案,有时不会

php - 表中的MySQL ID编号

php - 使用准备好的语句插入 select MySQL

c - 用C填充一个数组

unicode - 通过 FTP 将 ANSI 字符串写入 Unicode 文件

C 代码兼容性