上下文
我刚刚在postgresql数据库中遇到一个表,它实际上只定义了一个编码值的三元组,作为三元数据类型在整个数据库中使用。乍一看我有点吃惊,我觉得很奇怪;应该有一些三元数据类型吗?
我搜索过网络,尤其是postgresql文档,但没有任何明显的成功(我的搜索关键字可能错了?!),但也许没有其他解决办法。
问题
我想知道在postgresql中是否存在三元(与二进制或布尔型相比)数据类型,或者更普遍地说,在sql中是否存在允许表示“三元状态”(或“三元布尔型”,这显然是对语言的滥用)的数据类型,我将其作为一个总体想法来表示为:
+-------+----------+--------------------+
| id | type | also expressed as |
+-------+----------+--------------------+
| 0 | false | 0 |
| 1 | true | 1 |
| 2 | unknown | 2 |
+-------+----------+--------------------+
哪里 unknown
可以是你实际处理的任何第三种状态。
3条答案
按热度按时间vbkedwbf1#
我想知道它是否存在三元(与二进制或布尔值比较)数据类型
事实上
boolean
数据类型是三元的,因为它可以有true
,false
以及null
.考虑下这张表:
以及以下数据:
然后是以下内容:
将只返回一行(其中一些\u数=2)
rjee0c152#
mrwjdhj33#
对于您的具体示例,我建议使用\u horse \u with \u no \u name的解决方案,但更通用的方法是使用枚举数据类型:
这种数据类型的常量写为字符串constantls,例如。
'never'
,但无论标签的长度如何,内部存储器每个值使用4个字节。