我的表格中有一个名为duration
的{{1}}列。
如何添加检查约束来检查前两个字符和后两个字符是否为数字,第三个字符是":"
例如:
varchar(5)
答案 0 :(得分:5)
这应该有效:
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')
答案 1 :(得分:0)
如果您必须使用varchar(5),则 C 2 的答案是正确的。 但是,如果您真的想解决问题,则需要忘记varchar(5)并使用time datatype 。使用Time
打开了更准确甚至计算的可能性,使用varchar(5)是不可能的。
如果您的duration
可以大于23:59:59.9999999(Time数据类型的最大值),那么您应该使用INT
的味道来包含最大分钟数或秒数需要并存储总分钟或秒。如果你的持续时间是5小时7分钟:05:07
存储普通的int:307分钟,或18420秒。