我正在做一个项目,我想在表格中存储一些容易枚举的信息。MySql 的枚举数据类型正是我想要的: http: //dev.mysql.com/doc/refman/5.0/en/enum.html。SQL Server 2005 中是否有等价物?
我知道我可以使用键将可能的值存储在类型表中,但我宁愿不必链接回它进行描述。我们的数据库标准不允许我们链接非整数或唯一标识符字段,因此也将可能的键存储为字符。
我正在做一个项目,我想在表格中存储一些容易枚举的信息。MySql 的枚举数据类型正是我想要的: http: //dev.mysql.com/doc/refman/5.0/en/enum.html。SQL Server 2005 中是否有等价物?
我知道我可以使用键将可能的值存储在类型表中,但我宁愿不必链接回它进行描述。我们的数据库标准不允许我们链接非整数或唯一标识符字段,因此也将可能的键存储为字符。
这对你有用吗?
来自http://blechie.com/wtilton/archive/2007/08/24/303.aspx
创建表...
MySQL:
ColumnName ENUM('upload', 'open', 'close', 'delete', 'edit', 'add')
DEFAULT 'open'
SQL 服务器:
ColumnName varchar(10)
CHECK(ColumnName IN ('upload', 'open', 'close', 'delete', 'edit', 'add'))
DEFAULT 'open'
MySQL 的 ENUM 数据类型的一个特点是它在每一行的值列表中只存储一个数字索引,而不是字符串本身。因此,它通常更具存储效率。此外,当您按 ENUM 列排序时,默认行为是按数字索引排序,因此按 ENUM 中元素的顺序。
Nikki9696 建议使用带有 CHECK 约束的 VARCHAR 列。这满足了将值限制为某个允许值的短列表,但它不模拟存储效率或特殊的排序顺序。
获得这两种行为的一种方法是将列声明为查找表中的整数外键,您可以在其中存储每个允许的字符串。