当手工输入时,难免回有输入不达标准的情况,就会影响到整个程序的运行.
请问当字段中同时有汉字和数字时,怎样控制数字后面不能输入汉字,但前面可以?
比如:某字段值是'汉字100.001汉字',怎样控制100.001的后面不出现汉字?
谢谢!
请问当字段中同时有汉字和数字时,怎样控制数字后面不能输入汉字,但前面可以?
比如:某字段值是'汉字100.001汉字',怎样控制100.001的后面不出现汉字?
谢谢!
调试欢乐多
--2.或创建约束
create table test(a varchar(20) check(patindex('%[0-9]%',a)=0 or patindex('%[0-9][啊-咗]%',a)=0))
returns bit
as
begin
declare @a int,@b int,@bit bit
select @a=patindex('%[0-9]%',@s),@b=0
while patindex('%[吖-座]%',@s)>0
select @b=patindex('%[吖-座]%',@s),@s=stuff(@s,1,patindex('%[吖-座]%',@s),'')
return(case when @a>@b then 1 else 0 end)
end
godeclare @s nvarchar(100)set @s='asdfa中国'select dbo.T_check(@s)
godeclare @s nvarchar(100)set @s='111asdfa'select dbo.T_check(@s)
returns bit
as
begin
declare @a int,@b int,@bit bit
select @a=patindex('%[0-9]%',@s),@b=0
while patindex('%[吖-座]%',@s)>0
select @b=@b+patindex('%[吖-座]%',@s),@s=stuff(@s,1,patindex('%[吖-座]%',@s),'')--改一下函数
return(case when @a>@b then 1 else 0 end)
end
godeclare @s nvarchar(100)set @s='asdfa中国111中国'select dbo.T_check(@s)
go
[\u4E00-\u9FA5]*[0-9]+[[\.]*[0-9]+]*
我只匹配类似这样的字符串:'汉字100.001'