SQLlite 是否具有其他 SQL 风格所没有的任何功能(除了基于文件的特性)?

Does SQLite have any features (other than file-besed-ness) that other SQL flavours do not?

我记得在某处读到 SQLite 在可能的情况下完全遵循标准(例如,未实现切换数据库等,以及使用动态类型)。人们会期望其他口味也遵循该标准,然后添加一些额外的功能。

这些期望是否正确?如果是这样,我希望(几乎)任何有效的 SQLite 代码也将是有效的 PostgreSQL、MySQL 或其他 SQL 风格。

这是真的吗?或者,

TL;博士有没有有效的 SQLite 不使用其基于文件的性质,在其他方言中无效?

我不确定这是否是您要找的答案,但是。

SQLite——与每个数据库一样——与标准不同。 SQLite 中有很多东西在其他数据库中不起作用。这是高度以数据库对为中心的。但这里有一些例子:

  • limit 在 SQL 服务器或 Oracle 中不起作用。
  • instr() 在 SQL 服务器中不工作。
  • 据我所知,
  • printf() 在任何其他数据库中都不起作用。
  • likely()unlikely()randomblob()total_changes()zeroblob()like()glob()
  • 据我所知,具有多个参数的
  • min()max() 在任何其他数据库中都不起作用。
  • len() 在 Oracle 或 Postgres 中不起作用。
  • soundex() 在 Postgres 中不起作用。
  • substr() 在 SQL 服务器中不工作。
  • trim() 在 SQL 服务器中不工作。
  • ltrim()rtrim() 在 Postgres 中不起作用。

我决定在 10 点停止(对于上述任何错误,我深表歉意)。还有很多例子。

在 SQLite 或任何数据库中编写的代码不能保证在任何其他数据库中都能正常工作,除了密切相关的数据库对,例如 MySQL/MariaDB, SQL Server/Sybase(而且他们已经分道扬镳了),还有 Postgres 和一堆 Postgres 派生的数据库。