MSSQL2000如何在存储过程里限制输入字符的类型?@Name 如何对用户输入的数据进行判断,让其只接受字母,数字。

解决方案 »

  1.   

    在定义的时候用 check约束
      

  2.   

    create table tb(name varchar(100),
    CONSTRAINT check_name CHECK(name not like '%[^a-zA-Z0-9]%')
    )
    go
    insert into tb select 'abced05'
    /*
    (1 行受影响)
    */
    go
    insert into tb select '张三a'
    /*
    消息 547,级别 16,状态 0,第 1 行
    INSERT 语句与 CHECK 约束"check_name"冲突。该冲突发生于数据库"test",表"dbo.tb", column 'name'。
    语句已终止。(0 行受影响)
    */
    go
    drop table tb
      

  3.   

    存储过程:
    create procedure checkname
    (@name varchar(100))
    as
    begin
    if @name not like '%[^a-zA-Z0-9]%'
    select '正确'
    else
    select '错误'
    end
    go
    exec checkname 'abcd'
    /*
    ----
    正确(1 行受影响)
    */
    exec checkname '张三a'
    /*
    ----
    错误(1 行受影响)*/
    go
    drop procedure checkname
      

  4.   

    一位一位的取值,然后利用char()函数去比较
      

  5.   

    --一点小修改,容易理解点
    create procedure checkname
    (@name varchar(100))
    as
    begin
    if @name  like '%[^a-zA-Z0-9]%'
        select '错误'
    else
        select '正确'
    end
    go
    exec checkname 'abcd'
    /*
    ----
    正确(1 行受影响)
    */
    exec checkname '张三a'
    /*
    ----
    错误(1 行受影响)*/
    go
    drop procedure checkname