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

一个简单的字符截取的问题

楼主li2004(游戏人生)2004-12-03 20:52:29 在 MS-SQL Server / 基础类 提问

我想截取一个字符,如果超过规定的长度n就截取n-2字符,再加   ..   补上,如果不足,就补足   ....  
  这个不是问题,但我现在发现这样取的话,会出现以下现象    
  假如n是6   有字符  
   
  aaaaaaaaaaaaaaaaaaaaaaaaaa  
  我我我我我我我我我我我我  
  我a  
   
  结果:  
  aaaa..  
  我我我我..  
  我a....  
   
  这样有中文英文的话就对不齐了.  
  我现在想得到的就是以中文的字符为准则,即要以下结果  
   
  aaaaaaaa..  
  我我我我..  
  我a.......  
   
  我该怎么写,最好是函数,谢谢  
   
  问题点数:20、回复次数:6Top

1 楼lmj2003(雁不归)回复于 2004-12-03 20:54:32 得分 2

能不能用NVARCHAR也就是宽字符。  
  帮你顶。  
  Top

2 楼li_guang(李广)回复于 2005-01-02 15:17:37 得分 2

帮顶一下先Top

3 楼zhangzs8896(小二)回复于 2005-01-02 15:31:55 得分 2

使用datalength()去判断长度,别用len()  
  比如:  
  select   datalength('我我我我..')     --   返回10  
  select   len('我我我我..')   --返回6Top

4 楼didoleo(冷月无声)回复于 2005-01-02 16:21:14 得分 6

 
  select    
  case    
  when    
  datalength(@str)<>len(@str)   and   datalength(@str)<=12   then   @str+replicate('.',12-datalength(@str))  
  when    
  datalength(@str)<>len(@str)   and   datalength(@str)>12     then   left(@str,4)+'..'  
  when    
  datalength(@str)=len(@str)   and   len(@str)<=6   then   @str+replicate('.',12-len(@str))  
  when    
  datalength(@str)=len(@str)   and   len(@str)>6     then   left(@str,10)+'..'  
  end  
  Top

5 楼didoleo(冷月无声)回复于 2005-01-02 16:33:11 得分 4

--改一点  
   
  select    
  case    
  when    
  datalength(@str)<>len(@str)   and   datalength(@str)<=12   then   @str+replicate('.',10-datalength(@str))  
  when    
  datalength(@str)<>len(@str)   and   datalength(@str)>12     then   left(@str,4)+'..'  
  when    
  datalength(@str)=len(@str)   and   len(@str)<=6   then   @str+replicate('.',12-len(@str))  
  when    
  datalength(@str)=len(@str)   and   len(@str)>6     then   left(@str,8)+'..'  
  end  
  Top

6 楼didoleo(冷月无声)回复于 2005-01-02 16:36:15 得分 4

--晕,还得改一点   :)   再改不对,就看楼下的了,呵呵.   :)  
   
   
  select    
  case    
  when    
  datalength(@str)<>len(@str)   and   datalength(@str)<=12   then   @str+replicate('.',10-datalength(@str))  
  when    
  datalength(@str)<>len(@str)   and   datalength(@str)>12     then   left(@str,4)+'..'  
  when    
  datalength(@str)=len(@str)   and   len(@str)<=6   then   @str+replicate('.',10-len(@str))  
  when    
  datalength(@str)=len(@str)   and   len(@str)>6     then   left(@str,8)+'..'  
  endTop

相关问题

  • 截取字符串的简单问题!
  • 简单得SQL字符串截取!help!~~~~~~~~~~~~~~~~~~~~~~~~~~~`
  • 简单问题,字符截取问题
  • 求一简单sql(截取字符串)
  • 简单问题,SUBSTRING截取字符
  • 字符截取
  • 字符截取
  • 简单任务之菜鸟版:怎样截取字符串???
  • 【简单问题】关于字符串截取
  • 一个关于字符串截取的简单问题

关键词

  • 字符
  • datalength
  • 截取
  • len
  • str
  • then left
  • case
  • select

得分解答快速导航

  • 帖主:li2004
  • lmj2003
  • li_guang
  • zhangzs8896
  • didoleo
  • didoleo
  • didoleo

相关链接

  • SQL Server类图书

广告也精彩

反馈

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