在 Oracle 中创建布尔属性? [复制]
Posted
技术标签:
【中文标题】在 Oracle 中创建布尔属性? [复制]【英文标题】:Create boolean attribute in Oracle? [duplicate] 【发布时间】:2013-01-21 19:44:20 【问题描述】:我必须在 Oracle 中创建一个表,并且必须将一列设为布尔类型。你能告诉我我该怎么做吗?我在互联网上搜索过,但找不到明确的答案。
【问题讨论】:
【参考方案1】:SQL 中没有 BOOLEAN 数据类型。但我们可以这样表示:
CREATE TABLE tt
(test NUMBER(1) NOT NULL CHECK (test in (0,1)))
【讨论】:
啊,很好。检查的开销如何? 但是我可以以某种方式创建一个名为 boolean 的类型,然后在我的表中添加字段 boolean 吗? @DanielHilgarth 是的,但是我们想要更好的性能和错误,还是更少的性能和错误? @RaphaëlAlthaus:没有人想要错误,但我看不到任何错误。你?请参阅我的其他评论:只需将所有不为 0 的内容视为真实。这在计算领域有着悠久的历史。 这不是真正的日常使用实现。我有一个学校项目,我的老师给了我这个带有布尔属性的架构。【参考方案2】:查看 CREATE TYPE 了解 Oracle。
在某些数据库中,可以定义自己的布尔数据类型(有人告诉我,这在 Oracle 中不工作,但它说明了这个想法):
CREATE DOMAIN BOOLEAN
AS NUMBER(1)
NOT NULL
CHECK (value IN (0,1))
这可以用作表格列的任何其他类型。
【讨论】:
我收到此错误:ORA-00901: invalid CREATE command 编辑:正如我在互联网上看到的,CREATE DOMAIN 不是 ORACLE SQL 的一部分 查看 CREATE TYPE for Oracle。【参考方案3】:没有布尔数据类型。你必须使用NUMBER(1)
。
【讨论】:
hmmm,好像有点短,我可以在你的字段中放3个... @RaphaëlAlthaus:我知道。如果您有更好的解决方案,我会很高兴听到它。我从来没有找到一个。但这真的不是问题。只需像 C++ 一样对待该字段:0 表示 false,而不是 0 表示 true。【参考方案4】:阅读 Oracle 文档中的 Virtual Column 并使用其他人建议的数字:0-false,1-true。 Oracle 的 CREATE 表中没有 BOOLEAN 数据类型。
【讨论】:
虚拟列与此有什么关系?它们是保存(或似乎保存)去规范化数据的一种很酷的机制。 至于虚拟栏目,我知道他们是做什么的。我没有看到它们与这个问题的相关性here。如果您认为它们是相关的,您应该编辑您的“答案”以包含一些示例代码。这至少与现有答案不同。谁知道呢,我什至可能会支持你…… @APC- 问题是关于创建布尔属性。在 Oracle 表中。我提到其他人已经回答了有关布尔值并建议使用 virt。用于计算的列,因为这是问题所述的 CREATE TABLE 中使用的功能。我希望你现在明白了。你和其他人可以随心所欲地对我投反对票——我没有得到任何分数,也没有寻求认可。与许多其他人不同,我正在学习、帮助和感恩...... 让我们continue this discussion in chat以上是关于在 Oracle 中创建布尔属性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
默认情况下使用 Oracle 数据库时,Hibernate 将布尔数据类型映射到啥?