有没有像便携式SQL这样的东西?

前端之家收集整理的这篇文章主要介绍了有没有像便携式SQL这样的东西?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
根据我的经验,即使有一个sql标准,很难编写可以通过大量RDBMS工作的sql.

因此,我想知道是否有一个已知可用于所有主要RDBMS的sql(包括DDL,模式等)的子集,包括Postgresql,MySQL,sql Server以及最后但并非最不重要的Oracle.编写可移植sql时应避免什么样的陷阱?

顺便提一句,是否有一个项目的目标是将有效的sql子集翻译成所有这些供应商使用的特定方言?我知道Hibernate和其他ORM系统必须这样做,但是我不想要ORM,我想要写直接到数据库sql.

谢谢!

解决方法

问题是一些DBMS甚至忽略最简单的标准(例如,引用字符或字符串连接).

因此,以下(100%ANSI sql)不会在每个DBMS上运行:

UPDATE some_table
    SET some_column = some_column || '_more_data';

而且我甚至没有考虑更高级的sql标准,比如递归的普通表表达式(即使那些支持它的表达式并不总是符合)或者窗口函数(一些仅实现非常窄的子集,有些不支持所有选项).

关于DDL,数据类型有问题. DATE不尽相同,就像TIMESTAMP一样.不是每个DBMS都有一个BOOLEAN类型或TIME类型.

当涉及到约束或域名时,您会得到更多的差异.

所以简而言之:除非你真的,真的需要独立于DBMS,不用担心.

说完所有这些:如果你有专有和标准语法之间的选择,可以选择标准语法(OUTER JOIN vs()或* =,解码vs CASE,nvl对合并等等).

猜你在找的MsSQL相关文章