0

私のテーブルdurationにはタイプの列があります。varchar(5)

最初の 2 文字と最後の 2 文字が数値で、3 文字目が ":" かどうかをチェックするチェック制約を追加する方法

元:

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 データ型を使用する必要があります。を使用するTimeと、varchar(5) では不可能な、より正確な計算の可能性が開かれます。

duration23:59:59.9999999 (Time データ型の最大値) よりも大きくなる可能性がある場合は、フレーバー を使用してINT、必要な分または秒の最大数を含め、合計の分または秒だけを格納する必要があります。期間が 5 時間 7 分である場合:05:07プレーンな int: 307 分、または 18420 秒を保存します。

于 2012-08-13T07:18:04.287 に答える