Oracle数据库表列中缺少Bit数据类型

27 浏览
0 Comments

Oracle数据库表列中缺少Bit数据类型

Oracle不支持bit数据类型或任何其他用于真/假场景的类型。如果不考虑文化特定的问题,是否可以使用char(1)字段,并使用特定的字母来表示是/真?

除了使用char,是否应该改用Number(1,0) - 0被视为false/否,任何其他值被解释为true/是?

这种方法可行吗?


为什么Oracle不支持一个简单的布尔类型呢?

admin 更改状态以发布 2023年5月22日
0
0 Comments

我不是英语母语人士,因此我倾向于使用1和0或'1'和'0'。如果你不是用英语编程(是的,母语编程是存在的),使用'Y'和'N'几乎没有意义。使用'SI'和'NO'或'S'和'N'看起来不太专业(就像使用带重音符号的变量名一样)。然而,如果你在C、PHP或JavaScript中编码,使用1和0则相当标准。无论如何,我总是添加适当的约束来禁止任何其他字符。除了主观问题外,我认为在选择CHAR或NUMBER时没有明显的性能提升。我更喜欢数字,因为我不需要引用它们 🙂

我同意这是一个明显的遗漏,但我在一些Oracle论坛上读到了一些关于此问题的热烈讨论;这是一种宗教问题。有些人声称布尔类型属于应用程序数据类型,不应该出现在数据库核心中。说实话,我认为这是那些我们已经没有它这么久,我们最好说它是有意的事情之一。

顺便说一下,MySQL有一个BOOLEAN类型,但它是TINYINT(1)的同义词,因此最终等于1和0;这很好,因为它还有TRUE和FALSE常量,它们评估为1和0。

0
0 Comments

使用 CHAR(1),并使用约束来允许仅 10

...

col CHAR(1),
CONSTRAINT cons_atable_col1 CHECK (col1 IN ('1','0'))

0