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

关于“字符串判断”求助

楼主VitamC(哈利波特)2003-08-04 14:52:12 在 MS-SQL Server / 基础类 提问

在SQL2K中我想从一些字符串里面截取我需要的东西,比如‘脊椎L3-T4’,‘脊椎C3-L1’等类似的字符串中截取前面有用的中文信息,但是这些字符串长度不固定,没有固定的分隔符,要在存储过程中实现,要用什么语法?具体要怎么写?请高手指点,谢谢。 问题点数:0、回复次数:4Top

1 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-04 15:04:05 得分 0

1,建立自定义函数  
  CREATE   function   getLeftChinese(@a   Nvarchar(100))  
  returns   Nvarchar(2000)  
  as  
  begin  
  declare   @i   int,@len   int,@b   Nvarchar(100)  
  set   @i=1  
  set   @b=''  
  set   @len=len(@a)  
  while   @i<=@len  
  begin  
  if   ascii(right(@a,@i))<128  
  set   @b=left(@a,@len-@i)  
  set   @i=@i+1  
  end  
  return   @b  
  end  
   
   
  2,  
  select   dbo.getLeftChinese(字段名)   from   你的表Top

2 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-04 15:05:15 得分 0

1,建立自定义函数  
  CREATE   function   getLeftChinese(@a   Nvarchar(100))  
  returns   Nvarchar(2000)  
  as  
  begin  
  declare   @i   int,@len   int,@b   Nvarchar(100)  
  set   @i=1  
  set   @b=''  
  set   @len=len(@a)  
  while   @i<=@len  
  begin  
  if   ascii(right(@a,@i))<128  
  set   @b=left(@a,@len-@i)  
  set   @i=@i+1  
  end  
  return   @b  
  end  
   
   
  2,  
  select   dbo.getLeftChinese(字段名)   from   你的表Top

3 楼tj_dns(愉快的登山者)回复于 2003-08-04 15:14:31 得分 0

declare   @s   varchar(100)  
  set   @s   =   '脊椎L3-T4'  
  declare   @i   int  
  set   @i   =   1  
  while   ascii(substring(@s,@i,1))   >   127  
  begin  
      set   @i   =   @i   +   1  
  end  
  select   left(@s,@i-1)  
   
  Top

4 楼tj_dns(愉快的登山者)回复于 2003-08-04 15:19:19 得分 0

create   function   f2   (@s   varchar(100))  
  RETURNS   varchar(100)  
  as  
  begin  
      declare   @i   int  
      set   @i   =   1  
      while   ascii(substring(@s,@i,1))   >   127  
      begin  
          set   @i   =   @i   +   1  
      end  
  return   (left(@s,@i-1))  
  end  
   
   
  select   dbo.f2('脊椎L3-T4')Top

5 楼tj_dns(愉快的登山者)回复于 2003-08-04 15:24:24 得分 0

create   function   f2   (@s   varchar(100))  
  RETURNS   varchar(100)  
  as  
  begin  
      declare   @i   int  
      set   @i   =   1  
      while   ascii(substring(@s,@i,1))   >   127  
      begin  
          set   @i   =   @i   +   1  
      end  
  return   (left(@s,@i-1))  
  end  
   
   
  select   dbo.f2('脊椎L3-T4')Top

6 楼zjcxc(邹建)回复于 2003-08-04 22:14:28 得分 0

create   procedure   aa   @str   varchar(8000),@re   varchar(8000)   output  
  as  
  declare   @i   int  
  set   @i=1  
  while   ascii(substring(@str,@i,1))   >   127  
      set   @i=@i+1  
  set   @re=left(@str,@i-1)  
  go  
   
  --调用  
  declare   @str   varchar(8000)  
  exec   aa   '脊椎L3-T4',@str   out  
  print   @str  
   
  --删除存储过程  
  drop   proc   aaTop

相关问题

  • 字符串判断
  • 判断字符串问题
  • 判断字符串是否??????
  • 怎么判断一个小字符串在大字符串中?
  • 求判断一字符串在数组中字符串函数?
  • 一个字符串,如何判断字符串中含有 ABCDEF0-9
  • 如何判断字符串为 汉字
  • 如何判断字符串为null!!急!!!!!!
  • Java中字符串相等的判断!
  • 字符串判断及修改问题

关键词

  • 字符串
  • f2
  • t4
  • 脊椎l3
  • endselect
  • varchar
  • nvarchar
  • while ascii
  • aa
  • substring

得分解答快速导航

  • 帖主:VitamC

相关链接

  • SQL Server类图书

广告也精彩

反馈

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