CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

如何检测全角字符?

楼主zzroom(徐子陵)2003-12-01 10:44:57 在 MS-SQL Server / 基础类 提问

数据库:SQL   SERVER   2000  
   
  我想将表(tbl_a)的   A   字段中的含有全角字符的记录找出来,请问如何做? 问题点数:100、回复次数:16Top

1 楼letsflytogether(伍子)回复于 2003-12-01 10:55:34 得分 50

select   *   from   ta1_a   where   columnname   collate   Chinese_PRC_CS_AS_WS='AA'Top

2 楼letsflytogether(伍子)回复于 2003-12-01 10:57:05 得分 0

 
  Windows   排序规则名称  
  在   COLLATE   子句中指定   Windows   排序规则名称。Windows   排序规则名称由排序规则指示器和比较风格构成。  
   
  语法  
  <   Windows_collation_name   >   ::   =    
   
          CollationDesignator_<ComparisonStyle>  
   
          <   ComparisonStyle   >   ::=    
                  CaseSensitivity_AccentSensitivity  
                  [_KanatypeSensitive   [_WidthSensitive   ]   ]  
                  |   _BIN  
   
  参数  
  CollationDesignator  
   
  指定   Windows   排序规则使用的基本排序规则。基本排序规则包括:    
   
  当指定按字典排序时应用其排序规则的字母表或语言  
   
   
  用于存储非   Unicode   字符数据的代码页。    
  例如   Latin1_General   或法文,两者都使用代码页   1252,或土耳其文,它使用代码页   1254。  
   
  CaseSensitivity  
   
  CI   指定不区分大小写,CS   指定区分大小写。  
   
  AccentSensitivity  
   
  AI   指定不区分重音,AS   指定区分重音。  
   
  KanatypeSensitive  
   
  Omitted   指定不区分大小写,KS   指定区分假名类型。  
   
  WidthSensitivity  
   
  Omitted   指定不区分大小写,WS   指定区分大小写。  
   
  BIN  
   
  指定使用二进制排序次序。  
   
   
  Top

3 楼zzroom(徐子陵)回复于 2003-12-01 11:00:53 得分 0

to   letsflytogether:  
          我的意思是:表(tbl_a)的   A   字段只能录入半角字符,我必须将录入了全角字符的记录找出来。用你的方法我要写很多语句,有更简单的方法吗?Top

4 楼zjcxc(邹建)回复于 2003-12-01 11:04:39 得分 50

区分大小写、全半角字符  
   
  --例子,查大写字母  
  select   *   from(  
  select   aa='aa'  
  union   all   select   'Aa'  
  union   all   select   'AA'     --全角A  
  union   all   select   'A,A' --全角A,半角,  
  union   all   select   'A,A' --全角A,全角,  
  )a  
  where   aa   collate   Chinese_PRC_CS_AS_WS   like   '%A%'  
   
  --查全角  
  select   *   from(  
  select   aa='aa'  
  union   all   select   'Aa'  
  union   all   select   'AA'     --全角A  
  union   all   select   'A,A' --全角A,半角,  
  union   all   select   'A,A' --全角A,全角,  
  )a  
  where   aa   collate   Chinese_PRC_CS_AS_WS   like   '%A%'  
   
  --查半角,  
  select   *   from(  
  select   aa='aa'  
  union   all   select   'Aa'  
  union   all   select   'AA'     --全角A  
  union   all   select   'A,A' --全角A,半角,  
  union   all   select   'A,A' --全角A,全角,  
  )a  
  where   aa   collate   Chinese_PRC_CS_AS_WS   like   '%,%'  
   
  Top

5 楼letsflytogether(伍子)回复于 2003-12-01 11:26:46 得分 0

那你就用datalength吧  
   
  select   datalength('A')  
  select   datalength('A')Top

6 楼sunsunup(細水長流)回复于 2003-12-01 11:28:04 得分 0

select   *   from   tableA   where    
  fldA   collate   Chinese_PRC_CI_AS_WS   like   '%A%'    
  or   fldA   collate   Chinese_PRC_CI_AS_WS   like   '%B%'  
  ...Top

7 楼j9988(j9988)回复于 2003-12-01 14:00:39 得分 0

好笨的方法:  
   
  select   *   from   table   where   YourField   collate   Chinese_PRC_CS_AS_WS    
  like   '%[!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~]¥%'Top

8 楼j9988(j9988)回复于 2003-12-01 14:03:38 得分 0

还有 ̄“。”《》<>、|?   加上去,枚举Top

9 楼pengdali()回复于 2003-12-01 14:04:00 得分 0

如果不需要判断汉字,J老师写的是速度最快的。  
  Top

10 楼pengdali()回复于 2003-12-01 14:06:22 得分 0

恩,还有空格。Top

11 楼sdhdy(大江东去...)回复于 2003-12-01 14:14:58 得分 0

枚举的办法不错!Top

12 楼zjcxc(邹建)回复于 2003-12-01 14:37:22 得分 0

还没有想到更好的办法.Top

13 楼letsflytogether(伍子)回复于 2003-12-02 08:24:51 得分 0

这个办法怎么样  
   
  select   *   from(  
  select   aa='aa'  
  union   all   select   'Aa'  
  union   all   select   'AA'     --全角A  
  union   all   select   'A,A' --全角A,半角,  
  union   all   select   'A,A' --全角A,全角,  
  )a  
  where   datalength(aa)>len(aa)Top

14 楼pengdali()回复于 2003-12-02 08:34:20 得分 0

楼上,有中文不需要判断。Top

15 楼pengdali()回复于 2003-12-02 08:48:36 得分 0

select   *   from   你的表   where   not   exists(select   1   from   (  
  select   nchar((select   count(*)+65280   from   sysobjects   where   id<tem.id))   code   from   sysobjects   tem)   a  
  where   你的列   like   N'%'+code+N'%'Top

16 楼pengdali()回复于 2003-12-02 08:49:24 得分 0

select   *   from   你的表   where   not   exists(select   1   from   (  
  select   nchar((select   count(*)+65280   from   sysobjects   where   id<tem.id))   code   from   sysobjects   tem)   a  
  where   你的列   like   N'%'+code+N'%')  
   
  --or  
   
   
  select   *   from   你的表   where   not   exists(select   1   from   (  
  select   nchar((select   count(*)+65280   from   sysobjects   where   id<tem.id))   code   from   sysobjects   tem)   a  
  where   charindex(code,你的列)>0)Top

相关问题

  • 如何判断全角字符?
  • java中全角字符如何表示
  • 如何将全角字符转化为半角字符?
  • 〓〓如何控制不允许向EDIT中输入全角字符?
  • 如何替换掉字符串中 那些全角字符,异常字符?
  • 如何判断字符串中是否包含有全角字符?
  • 救急!如何求一个包含全角字符的字符串
  • 如何能获得"汉字字符,全角字符"的实际长度?
  • 如何得到一个全角字符(汉字)的长度为2?
  • 请问如何将我的定稿中的所有半角字符替换为全角字符

关键词

  • 排序
  • ws
  • 字符
  • 代码
  • 半角
  • 全角
  • 指定
  • union
  • 区分大小写
  • awhere

得分解答快速导航

  • 帖主:zzroom
  • letsflytogether
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

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