导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

请问当字段中同时有汉字和数字时,怎样控制数字后面不能输入汉字,但前面可以?

Zi_Yuan 2007-12-03 11:37:39
当手工输入时,难免回有输入不达标准的情况,就会影响到整个程序的运行.
请问当字段中同时有汉字和数字时,怎样控制数字后面不能输入汉字,但前面可以?
比如:某字段值是'汉字100.001汉字',怎样控制100.001的后面不出现汉字?
谢谢!
...全文
59 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kk19840210 2007-12-03
最好在前台程序做控制
回复
chuifengde 2007-12-03
--1.用程序控制比较好
--2.或创建约束
create table test(a varchar(20) check(patindex('%[0-9]%',a)=0 or patindex('%[0-9][啊-咗]%',a)=0))
回复
Zi_Yuan 2007-12-03
谢谢各位!
回复
Zi_Yuan 2007-12-03
请问这个正则表达式对吗?
[\u4E00-\u9FA5]*[0-9]+[[\.]*[0-9]+]*
我只匹配类似这样的字符串:'汉字100.001'
回复
中国风 2007-12-03
以上为
满足为1,不满足0
回复
中国风 2007-12-03
create function T_check(@s nvarchar(100))
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
go

declare @s nvarchar(100)

set @s='asdfa中国111中国'

select dbo.T_check(@s)
go
回复
中国风 2007-12-03
create function T_check(@s nvarchar(100))
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
go

declare @s nvarchar(100)

set @s='asdfa中国'

select dbo.T_check(@s)
go

declare @s nvarchar(100)

set @s='111asdfa'

select dbo.T_check(@s)
回复
areswang 2007-12-03
记下
回复
中国风 2007-12-03
自己写一个函数来检查
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告