我再次面临一个严重的问题,即 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
(甚至W
或J
我在德语中看到的)。