私のテーブルduration
にはタイプの列があります。varchar(5)
最初の 2 文字と最後の 2 文字が数値で、3 文字目が ":" かどうかをチェックするチェック制約を追加する方法
元:
23:25
私のテーブルduration
にはタイプの列があります。varchar(5)
最初の 2 文字と最後の 2 文字が数値で、3 文字目が ":" かどうかをチェックするチェック制約を追加する方法
元:
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) では不可能な、より正確な計算の可能性が開かれます。
duration
23:59:59.9999999 (Time データ型の最大値) よりも大きくなる可能性がある場合は、フレーバー を使用してINT
、必要な分または秒の最大数を含め、合計の分または秒だけを格納する必要があります。期間が 5 時間 7 分である場合:05:07
プレーンな int: 307 分、または 18420 秒を保存します。