【问题标题】:How to create constraint for specific characters in sql server?如何为sql server中的特定字符创建约束?
【发布时间】:2021-07-01 12:19:06
【问题描述】:

我试图为图书 ID 创建一个约束条件,即 BID 之后的剩余 3 个字符必须是 001 到 999。我可以做什么而不是使用 %

CREATE TABLE Book
(
    [Book ID] CHAR(6),
    [Title] VARCHAR(50) NOT NULL,
    [Genre] VARCHAR(50) NOT NULL,
    [Author] VARCHAR(50) NOT NULL,
    [Price] DECIMAL(18,2) NOT NULL,
    CONSTRAINT Book_PK PRIMARY KEY ([Book ID]),
    CONSTRAINT chk_BookID  CHECK ([Book ID] like 'BID%'),
);

【问题讨论】:

  • 所以您有意设计您的表格以容纳最多 999 行(做出假设) - 为什么?当书“BID010”被删除时,你预计会发生什么?您有一个差距 - 您是否希望消除或重复使用该差距?为什么不将 Book ID 设为 numeric[3,0] 数据类型并为您的“视觉”需求添加一个计算列?

标签: sql sql-server constraints


【解决方案1】:

SQL Server 支持LIKE 中的字符类:

CONSTRAINT chk_BookID  CHECK ([Book ID] like 'BID[0-9][0-9][0-9]')

注意:我建议您将该列重命名为 Book_IDBookID。列名中有空格只会使查询混乱。

【讨论】:

    猜你喜欢
    • 2010-12-22
    • 1970-01-01
    • 2010-09-09
    • 2012-07-30
    • 1970-01-01
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多