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

在线等待:关于一个字符串的函数

楼主v2boy(大格)2004-08-02 13:50:41 在 MS-SQL Server / 基础类 提问

假如:  
   
  table1   包含   字段1,字段1里面的纪录如下  
   
  ---------------  
  select   字段1   form   table1  
  字段1纪录列表:  
   
  1.   a  
  2.   a,2345345,xzf,ddd  
  3.   23,xxx  
  4.   cc  
  5.   asdf,aii23  
  ......  
   
   
  现在:  
   
  变量   a   =   "a,cc,xxx,sdfas,23dsdf,asdfasdf,345asdfa,23452345,sdasdfxxxxz"  
   
  能否做个函数,该函数实现的功能是  
  只要   字段1   中   包含   变量   a   里面的任意一个词组,就将该纪录列表出来?  
   
   
   
   
   
  问题点数:20、回复次数:7Top

1 楼sankis()回复于 2004-08-02 14:01:48 得分 0

是要完全       匹配的吗?Top

2 楼notin(Not iN)回复于 2004-08-02 14:04:46 得分 0

关注中~~~Top

3 楼tx1icenhe(冒牌马可 V0.4)回复于 2004-08-02 14:11:58 得分 15

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[f_split]')   and   xtype   in   (N'FN',   N'IF',   N'TF'))  
  drop   function   [dbo].[f_split]  
  GO  
   
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[序数表]')   and   OBJECTPROPERTY(id,   N'IsUserTable')   =   1)  
  drop   table   [序数表]  
  GO  
   
  --为了效率,所以要一个辅助表配合  
  select   top   8000   id=identity(int,1,1)   into   序数表    
  from   syscolumns   a,syscolumns   b  
  alter   table   序数表   add   constraint   pk_id_序数表   primary   key(id)  
  go  
   
  /*--字符串分函数  
   
  分拆指定分隔符的的字符串,返回结果表  
   
  --邹建   2004-4--*/  
   
  /*--调用示例  
   
  --调用  
  select   *   from   f_split('asdlkfa,asf   as,dd     a',',')  
  --*/  
  create   function   f_split(  
  @str   varchar(8000), --要分拆的字符串  
  @splitchar   varchar(10) --分隔符  
  )returns   table  
  as  
  return(  
  select   re=substring(@str,id,charindex(@splitchar,@str+@splitchar,id)-id)  
  from   序数表    
  where   id<=len(@str)+1   and   charindex(@splitchar,@splitchar+@str,id)-id=0  
  )  
  go  
   
   
  --调用  
  declare   @a   varchar(2000)  
  set   @a   =   "a,cc,xxx,sdfas,23dsdf,asdfasdf,345asdfa,23452345,sdasdfxxxxz"  
   
  select   字段1   form   table1   a,dbo.f_split(@a,',')   b  
  where   ','+a.字段1+','   like   '%,'+b.re+',%'  
   
  Top

4 楼v2boy(大格)回复于 2004-08-02 14:13:40 得分 0

不是完全匹配,而是部分匹配。  
  比如上例中。如果变量    
  a   =   "ccc,d$xx"  
   
  就没有记录出来  
  但是如果   a   =   "23"   就要把第   3   条记录列表出来  
   
  如果   a   =   "a,243523524,asdfasfasdfadsf"  
   
   
  就要把   第   1、2   条记录列表出来Top

5 楼XiaoyunCheng(程晓云)回复于 2004-08-02 14:17:05 得分 0

第一步:用chaindex()把变量a从","分组,存入变量n1,n2…中;  
  第二步:依据n1,n2等筛选结果集;  
  如果是完全匹配请用charindex(),否则用patindex()。Top

6 楼CSDMN(冒牌经理 V0.4)回复于 2004-08-02 14:20:21 得分 0

先试试吧  
  Top

7 楼zhangzs8896(小二)回复于 2004-08-02 17:09:32 得分 5

冒牌的测试通过^_^  
     
   
    create   table   tb(字段1   varchar(100))  
    insert   tb   values('a')  
    insert   tb   values('a,2345345,xzf,ddd')  
    insert   tb   values('23,xxx')  
    insert   tb   values('cc')  
    insert   tb   values('asdf,aii23')  
   
  declare   @a   varchar(2000)  
  set   @a   =   'a,23'  
   
  select   字段1   from   tb   a,dbo.f_split(@a,',')   b  
  where   ','+a.字段1+','   like   '%,'+b.re+',%'  
     
  drop   table   tb  
   
  --结果  
  字段1                                                                                                                                                                                                      
  ----------------------------------------------------------------------------------------------------    
  a  
  a,2345345,xzf,ddd  
  23,xxx  
  Top

相关问题

  • !!!请问关于字符串一个函数!!!在线等待
  • 求一字符串中是否包含另一字符串的函数!在线等待
  • 请问判断某字符串str1为另一字符串str2的子串的函数?(在线等待!)
  • 判断某个字符串是否存在于某个字符串中的函数是哪个啊(for delphi),急,在线等待
  • 字符串函数?
  • 字符串函数
  • 急,请问有函数可取字符串后面N位字符吗?在线等待
  • 在ASP里整数转字符串的函数是什么?在线等待,马上给分!
  • 有没有什么函数可以去掉字符串中间的空格?在线等待\\\\\???
  • 请问有提取一个字符串中数字的函数吗?在线等待

关键词

  • 函数
  • 字段
  • 字符串
  • splitchar
  • 序数表
  • 纪录
  • dbo
  • split
  • where
  • str

得分解答快速导航

  • 帖主:v2boy
  • tx1icenhe
  • zhangzs8896

相关链接

  • SQL Server类图书

广告也精彩

反馈

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