CREATE RULE pattern_rule 
AS
@value LIKE '[0-9]'

解决方案 »

  1.   

    to CrazyFor(蚂蚁) 你的方法只能输入一个字符,但我要在8个字符以内随意输入几个都可以,而且是0-9的数字。请高手帮忙
      

  2.   

    加CHECK约束:
    alter table TABNAME add constraint A_chk check (isnumeric(isnull(FIELDNAME,0))=1 )如果小数点也不要:
    alter table TABNAME add constraint A_chk check (isnumeric(isnull(FIELDNAME,0))=1 and cast(FIELDNAME as int)=FIELDNAME )
      

  3.   

    还有大于0
    alter table TABNAME add constraint A_chk check (isnumeric(isnull(FIELDNAME,0))=1 and cast(FIELDNAME as int)=FIELDNAME and cast(FIELDNAME as int)>0 )
      

  4.   

    create RULE pattern_rule 
    AS
    @value+'1' like replicate('[0-9''  '']',len(@value+'1'))go
    create table t(id varchar(15))go
    EXEC sp_bindrule 'pattern_rule', 't.id'
    go
      

  5.   

    如果不允许数字中间有空格:
    create RULE pattern_rule 
    AS
    rtrim(@value)+'1' like replicate('[0-9]',len(rtrim(@value)+'1'))
      

  6.   

    to Chiff(~o~)
    不好意思 @value+'1'是什么意思啊?
      

  7.   

    to Chiff(~o~) 
      不加1也可以啊,结果没什么区别啊
      那为什么要加1呢?那如果是检查规则,怎么检查呢?不懂,请教!!
      

  8.   

    加个1,是考虑到你可能不允许空格。如果不加1,则插入
    '123   '的时候规则会出错。
    因为len('123   ')长度为3,而实际上有六个字符要参与规则,即123以及后面的三个空格。
    所以在后面加个1变成‘123   1’七个字符参与规则。看你的实际需要吧。