0

我的表中有一个名为durationtype的列varchar(5)

如何添加检查约束以检查前两个字符和后两个字符是否为数字,第三个字符是否为“:”

前任:

23:25
4

2 回答 2

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')
于 2012-08-12T21:04:05.397 回答
0

如果必须使用 varchar(5),那么C 2的答案是正确的。 但是,如果您真的想解决您的问题,您需要忘记 varchar(5) 并使用time 数据类型。使用Timevarchar(5) 可以打开更精确甚至计算的可能性,而这是使用 varchar(5) 无法实现的。

如果您duration可以大于 23:59:59.9999999(Time 数据类型的最大值),那么您应该使用风格INT来包含您需要的最大分钟数或秒数,并仅存储总分钟数或秒数。如果您的持续时间是 5 小时 7 分钟:05:07存储普通 int:307 分钟或 18420 秒。

于 2012-08-13T07:18:04.287 回答