Dav*_*542 0 oracle postgresql ansi-sql
这是一个非常普遍的问题,我希望找到一位既熟悉标准又熟悉一些数据库系统的专家。从高层次来看,SQL 标准中描述的类型系统与 Postgres、Oracle 或 DB2 中实现的类型系统之间有哪些差异。
我只是在编造一些东西(这是不正确的——只是用来显示我感兴趣的比较类型的格式),但一个例子可能是这样的:
| 标准 | Postgres | 甲骨文 |
|---|---|---|
INTERVAL类型 |
不存在,最接近的是TIME |
与标准相同。 |
(顺便说一句,这个问题对于 DBA 来说会更好吗?)
很少有人能够给你一个完整的列表,所以我只会告诉你我所知道的,而不声称完整。我也将自己限制在我更了解的数据库上。
\n对数据库实施的评论描述了与标准的偏差。
\n| SQL标准 | PostgreSQL | 甲骨文 | 评论 |
|---|---|---|---|
CHARACTER | \xe2\x9c\x94 | 空字符串被视为 NULL | 奇怪的标准规定的语义;避免 |
CHARACTER VARYING | \xe2\x9c\x94 | 空字符串被视为 NULL | |
CHARACTER LARGE OBJECT | 非标准名称text或varchar | \xe2\x9c\x94 | |
NATIONAL CHARACTER | \xe2\x9c\x94 | 空字符串被视为 NULL | 过时的 |
NATIONAL CHARACTER VARYING | \xe2\x9c\x94 | 空字符串被视为 NULL | 过时的 |
NATIONAL CHARACTER LARGE OBJECT | 非标准名称text或varchar | 空字符串被视为 NULL | 过时的 |
BINARY LARGE OBJECT | 非标准名称bytea | \xe2\x9c\x94 | |
NUMERIC | \xe2\x9c\x94 | \xe2\x9c\x94 | |
DECIMAL | \xe2\x9c\x94 | \xe2\x9c\x94 | 几乎与NUMERIC |
SMALLINT | \xe2\x9c\x94 | \xe2\x9c\x94 (与 相同类型NUMERIC) | |
INTEGER | \xe2\x9c\x94 | \xe2\x9c\x94 (与 相同类型NUMERIC) | |
BIGINT | \xe2\x9c\x94 | \xe2\x9c\x94 (与 相同类型NUMERIC) | |
FLOAT | \xe2\x9c\x94 | \xe2\x9c\x94 (与 相同类型NUMERIC) | |
REAL | \xe2\x9c\x94 | \xe2\x9c\x94 (与 相同类型NUMERIC,但也有BINARY_FLOAT) | |
DOUBLE PRECISION | \xe2\x9c\x94 | (与 相同类型NUMERIC,但也有BINARY_DOUBLE) | |
BOOLEAN | \xe2\x9c\x94 | \xe2\x9d\x8c (但在 PL/SQL 中允许) | |
DATE | \xe2\x9c\x94 | 实际上是一个时间戳 | |
TIME | \xe2\x9c\x94 | \xe2\x9d\x8c | |
TIME WITH TIME ZONE | \xe2\x9c\x94 | \xe2\x9d\x8c | 语义不清楚;避免 |
TIMESTAMP | \xe2\x9c\x94 | \xe2\x9c\x94 | |
TIMESTAMP WITH TIME ZONE | 语义与标准不同 | \xe2\x9c\x94 | |
INTERVAL | \xe2\x9c\x94 | \xe2\x9c\x94 | |
ROW | 复合类型 | 对象类型 | |
REF | \xe2\x9d\x8c | \xe2\x9c\x94(非标准语法) | |
<type> ARRAY | \xe2\x9c\x94 | 可变数组类型 | |
<type> MULTISET | \xe2\x9d\x8c | \xe2\x9d\x8c | |
XML | \xe2\x9c\x94 | 非标准名称XMLTYPE |
| 归档时间: |
|
| 查看次数: |
2230 次 |
| 最近记录: |