create
table
t
(
--
第一位字母
c1
varchar(10)
check
(patindex('%[A-Z,a-z]%',c1)=1),
--
为数字列
c2
char(6)
check
(ISNUMERIC(c2)=1)
)
希望对你有所帮助,祝你好运~~1> SELECT
2> PATINDEX('%come%go%', 'easy come, easy go, so easy!') A
3> go
A
-----------
6
(1 行受影响)
可以通过 PATINDEX(¡%[^a-zA-Z]%¡, 指定字符串) = 0 的方式,来创建 Check
约束,限制指定字段,只允许存储英文字母。
也就是
CREATE TABLE 表 (
字段 varchar(20) ,
CHECK PATINDEX(¡%[^a-zA-Z]%¡, 字段) = 0
);可以这样写
alter table table1 add constraint chk_col check(
len(col1)= 8 and
left(col1,2) = '00' and
substring(col1,3,1) like '[1-9]' and
substring(col1,4,1) like '[1-9]' and
substring(col1,5,1) = '_' and
substring(col1,6,1) like '[A-Z]' and
substring(col1,7,1) like '[A-Z]' and
substring(col1,8,1) like '[A-Z]' );SQL Server 2000 没有, 就拿个 SQL Server 2005 的来凑个数。
不大清楚 SQL Server 2000 里面,有没有 PATINDEX 函数了。
CREATE TABLE #temp(
test char(12)
CONSTRAINT chk_test
CHECK (
LEN(RTRIM(test)) = 11 AND
PATINDEX('%[^0-9]%', RTRIM(test)) = 0)
);
-- 失败 长度不符合,且是英文
INSERT INTO #temp VALUES ('a');
-- 失败 长度不符合
INSERT INTO #temp VALUES ('1');
-- 失败 长度不符合
INSERT INTO #temp VALUES ('123456789012');
-- 失败 长度符合 但是英文
INSERT INTO #temp VALUES ('1234567890a');
-- 成功
INSERT INTO #temp VALUES ('12345678901');
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)