SQL Server 2008数据类型

时间:2010-06-19 13:14:42

标签: sql-server-2008

我希望列只有两个值。例如,我想让列激活只能包含值“Y”和“N”我不想使用布尔数据类型。

我正在寻找类似于MS Access的查找向导的方法,如何做到这一点?

3 个答案:

答案 0 :(得分:3)

使用不可为空的位

  • 如果你想要德语的J和N怎么办?还是其他语言?这是客户端格式化
  • Ditto“true”,“false”
  • y / Y / n / N怎么样? Unicode Ys​​和Ns?
  • 你需要一个检查约束来限制为Y或N:为什么当你有这个时仍然有这个?

最后,SQL Server没有这样的布尔类型:客户端代码将位解释为布尔值,但

在对问题发表评论后编辑。

如果您需要添加更多值,那么我建议使用查找表和外键。这意味着您可以在不更改代码(CHECK约束)和/或数据类型的情况下支持新值。

答案 1 :(得分:1)

您正在寻找的是Check Constraints e.g。

ALTER TABLE dbo.Vendors ADD CONSTRAINT CK_Vendor_CreditRating
    CHECK (CreditRating >= 1 AND CreditRating <= 5)

或者你

ALTER TABLE dbo.MyTableName ADD CONSTRAINT CK_MtTable_FieldName_YN
    CHECK (FieldName = 'Y' OR FieldName = 'N')

答案 2 :(得分:-1)

您可以使用varchar(1)或nvarchar(1)。在您声明只有Y和N可用作输入以保持数据完整性的列上设置约束。

Grz,Kris。