CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

这个字段规则怎么设?

楼主me94me(我就是我)2004-12-02 10:46:08 在 MS-SQL Server / 应用实例 提问

设置一字段varchar(20)值只允许输入如下内容:  
  1:   数字0到9  
  2:   英文字母  
  3:   下划线  
   
  其它内容不允许输入,如空格,回车,加减号等。 问题点数:100、回复次数:8Top

1 楼skyboy0720(曲终人散)回复于 2004-12-02 10:48:30 得分 0

自定义数据类型Top

2 楼lsxaa(小李铅笔刀)回复于 2004-12-02 10:58:51 得分 0

用函数做  
  create   function   chk(@字段)  
  returns   bit  
  as  
  begin  
        if   1:   数字0到9  
              2:   英文字母  
              3:   下划线  
        return   1  
  return   0  
  end    
   
  add   check(dbo.chk(字段)>0)Top

3 楼txlicenhe(马可)回复于 2004-12-02 11:11:57 得分 0

看来好象真要写一个检验的函数来检验每一字符才行。   
   
  暂时没想到其它好办法。(感觉应该会有的)  
  Top

4 楼txlicenhe(马可)回复于 2004-12-02 11:22:35 得分 40

先就这样写吧,希望能有更好的办法。  
  create   function   f_chk(@s   varchar(20))  
  returns   int  
  as  
  begin  
  declare   @ret   int  
  set   @ret   =   1  
  if   len(@s)   <1    
  set   @ret   =   1  
  declare   @i   int  
  set   @i   =   1  
  while   @i   <=len(@s)  
  begin  
  if   substring(@s,@i,1)   not   like   ('%[0-9a-z_]%')  
  set   @ret   =   0  
  set   @i   =   @i+1  
  end  
  return   @ret  
  end  
   
  go  
   
  create   table   test(a   varchar(20)   check(dbo.f_chk(a)   =   1))  
   
   
  insert   test   values('abc_123')  
  insert   test   values('abc_123?')  
   
  select   *   from   test  
   
  /*  
   
  (所影响的行数为   1   行)  
   
  服务器:   消息   547,级别   16,状态   1,行   1  
  INSERT   语句与   COLUMN   CHECK   约束   'CK__test__a__27CF9CBD'   冲突。该冲突发生于数据库   'master',表   'test',   column   'a'。  
  语句已终止。  
  a                                          
  --------------------    
  abc_123  
   
  (所影响的行数为   1   行)  
   
  */  
  Top

5 楼lsxaa(小李铅笔刀)回复于 2004-12-02 13:18:45 得分 50

create   table   test(a   varchar(20)   check(a   not   like   '%[^0-9a-z_]%'))  
   
  Top

6 楼yesyesyes()回复于 2004-12-02 13:45:32 得分 3

x   like   '%[0-9]%'   or   x   like   '%[a-z]%'   or   x   like   '%!_%'   escape   '!'Top

7 楼txlicenhe(马可)回复于 2004-12-02 14:30:15 得分 4

还是铅笔刀的有效。Top

8 楼yangh44(涉世之初)回复于 2004-12-02 15:48:25 得分 3

lsxaa(小李铅笔刀)   的好!  
  Top

相关问题

  • 如何在 ACESS 中设置字段的有效性规则?
  • 这个字段怎么设置(oracle)
  • 自增字段怎么设为1
  • Tquery怎么设置sql得到字段1比字段2小的记录?
  • 怎么定义这个字段的有效性规则,这就是这个字段满足的条件或者是范围
  • DataBase Desktop 设计的DB数据库中的 Memo 字段和 Graphic 字段怎么输入?
  • access表里面怎么能设置一个字段的默认值等于另外两个字段的和??
  • 把某字段的某一个值设置成该字段中最大值,应该怎么写?
  • 标识字段怎么设回来1啊?
  • 怎么将sql字段设置成自动增加

关键词

  • 字段
  • 下划线
  • 函数
  • 检验
  • 数字
  • 内容
  • chk
  • 英文字母3
  • 办法
  • ret

得分解答快速导航

  • 帖主:me94me
  • txlicenhe
  • lsxaa
  • yesyesyes
  • txlicenhe
  • yangh44

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo