首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将SQL Server列限制为可能值的列表

将SQL Server列限制为可能值的列表
EN

Stack Overflow用户
提问于 2012-08-16 14:36:29
回答 3查看 56K关注 0票数 44

如何对列进行约束,使其只能包含下列值?您将这种类型的约束称为什么?

Allowed values: "yes", "no" or "maybe"
Column Data Type: nvarchar(5)
DBMS: SQL Server 2008
EN

回答 3

Stack Overflow用户

发布于 2013-11-20 17:34:29

是的,检查约束是不是你需要的。可以在表声明中声明check constraint:

CREATE TABLE test(
    _id BIGINT PRIMARY KEY NOT NULL,
    decision NVARCHAR(5),
    CHECK (decision in ('yes','no','maybe'))
);
票数 14
EN

Stack Overflow用户

发布于 2012-08-16 14:39:54

使用枚举表是一种方法。

票数 3
EN

Stack Overflow用户

发布于 2021-10-20 04:19:57

2021在这里,我想知道我们是否可以用另一种方式来做这件事(与检查约束相比,不一定是更好的方式)。

对于只允许“是”、“否”或“可能”值的列,也许我们可以有一个位类型的列,然后在它旁边有一个计算列,如下所示

Create Table xxx (
ColumnName bit null,
ColumnNameDerived varchar(10) as 
    case ColumnName
        when 0 then 'no'
        when 1 then 'yes'
        else 'maybe'
    end
)

对于具有更多可能值的列,可以选择tinyint类型,然后使用检查约束,如"<= 10“。假设一列有10个可能的值,那么约束"< 10“就可以了。

所以这个约束不会读得太长,你马上就知道有多少个可能的值。这也有助于节省存储空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11981868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档