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
存储过程: 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
一位一位的取值,然后利用char()函数去比较
--一点小修改,容易理解点 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
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
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
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