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

Zi_Yuan 2007-12-03 11:37:39
当手工输入时,难免回有输入不达标准的情况,就会影响到整个程序的运行.
请问当字段中同时有汉字和数字时,怎样控制数字后面不能输入汉字,但前面可以?
比如:某字段值是'汉字100.001汉字',怎样控制100.001的后面不出现汉字?
谢谢!
...全文
116 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
自己写一个函数来检查

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧