我的表中有一个名为duration
type的列varchar(5)
。
如何添加检查约束以检查前两个字符和后两个字符是否为数字,第三个字符是否为“:”
前任:
23:25
我的表中有一个名为duration
type的列varchar(5)
。
如何添加检查约束以检查前两个字符和后两个字符是否为数字,第三个字符是否为“:”
前任:
23:25
这应该有效:
create table test (
id int identity(1,1),
name varchar(5) constraint tmp_chk check(name like '[0-9][0-9]:[0-9][0-9]')
)
测试用例:
insert into test (name) values ('12:34')
insert into test (name) values ('12:a4')
insert into test (name) values ('12x34')
insert into test (name) values ('a2:34')
insert into test (name) values ('123:34')
如果必须使用 varchar(5),那么C 2的答案是正确的。 但是,如果您真的想解决您的问题,您需要忘记 varchar(5) 并使用time 数据类型。使用Time
varchar(5) 可以打开更精确甚至计算的可能性,而这是使用 varchar(5) 无法实现的。
如果您duration
可以大于 23:59:59.9999999(Time 数据类型的最大值),那么您应该使用风格INT
来包含您需要的最大分钟数或秒数,并仅存储总分钟数或秒数。如果您的持续时间是 5 小时 7 分钟:05:07
存储普通 int:307 分钟或 18420 秒。