这样?create table T(COl varchar(50) 
check((case when patindex('%","%',col)>1 and patindex('%[0-9]","[0-9]%',col)=0 then 0 else 1 end)=1))insert T values('3","4')--OKinsert T values('1A","4')--非数据不OK

解决方案 »

  1.   

    用check后面自己加条件判断就行了,判断条件多时写一个函数实现
      

  2.   


    --try:
    create table s(col varchar(50) check(len(col)-len(replace(col,',',''))=1 and 
    isnumeric(substring(col,0,charindex(',',col)))=1 and
    isnumeric(substring(col,charindex(',',col)+1,len(col)))=1)) 
    insert into s select '3,5' --ok
    insert into s select '3,5a'--不ok
    insert into s select '3a,5'--不ok
    insert into s select '3,5,44'--不ok
    select * from s
      

  3.   

    谢谢大家,写了个函数,好了。
    CREATE  function   F_ShaShi_Str_Geshi (@STR varchar(50)) 
    returns  bit
    begin 
           declare @B bit,
                       @WZ int
           select @B=0
           Set @WZ=charindex(',',@STR) 
         
            If (@WZ>1)  and  ( IsNumEric(left(@Str,@WZ-1))=1 )   and  ( IsNumEric(right(@Str,@WZ-1))=1 )
              select @B=1               Return @Bend 
      

  4.   

    这个函数有bug。不能满足你说的那些要求insert into s select '3,5,44'这样的数据就不满足了。。