在 Oracle 中创建布尔列时的最佳实践是什么?

pet*_*erh 4 oracle datatypes

我再次面临一个严重的问题,即 Oracle 根本没有布尔列类型。我需要使用char(1), 或smallint, 或其他一些。

最佳实践是什么,如何在 Oracle 中模拟布尔值?

(空间消耗现在不重要 - 但与 java/hibernate 线的良好合作很重要)。

a_h*_*ame 10

我通常使用number(1)结合检查约束的类型:

some_flag number(1) not null check (some_flag in (1,0))
Run Code Online (Sandbox Code Playgroud)

为了使事情变得清晰,我还在该表中添加了一条评论:

comment on column some_table.some_flag is '0 is false, 1 is true';
Run Code Online (Sandbox Code Playgroud)

以便在查看表的定义时可以看到对“真”的含义的解释。

由于本地化问题,我会避免使用字符表示。但如果这样做,请确保创建适当的检查约束。因为不清楚 achar(1)是否会使用T, Y, y, t(甚至WJ我在德语中看到的)。