派尔新闻    企业资源管理    媒体看派尔
登录 注册


>>
派尔新闻

>>
行业动态

>>
典型用户

>>
产品介绍

>>
友情连接

>>
用户讨论

>>
常用计算

>>
玻璃知识

>>
公司证书

>>
关于我们

>>
交通指南

>>
加盟派尔



Glass Software
 
The biggest glass company in china
 
The Biggest Glass Com. In Nanjing
 
Zhejiang Zhongli Glass
 
The Biggest Glass Factory In ShangHai
 
italy intermac glass division
 
bottero glass division
 
The Biggest Glass Com. In Shaoxing
 
lisecasia glass division

 


.Net经典文摘

作者 帖子:   请问T-SQL中有没有类似于VB中切分字符串的split的函数?
lq
请问T-SQL中有没有类似于VB中切分字符串的split的函数?
时间: Monday, July 09, 2007 9:27 PM (中)

请问T-SQL中有没有类似于VB中切分字符串的split的函数?
表table1,字段content,值0|2|2|1|0 
  
  想实现这样的查询:select id from table where split(content,'|')(0) = '0' 
  
  当然了,split函数只是我假设的,不知道sql中有没有现成的函数可以用?如果没有,又有没有可以实现这种查询的方法呢?谢谢.. 

--要自己写函数 
  
  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.04(引用请保留此信息)--*/ 
  
  /*--调用示例 
  
  select * from f_split('考号kaohao 科目kemu 学期xueqi',' ') 
  --*/ 
  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 
  

http://blog.csdn.net/ktyang/archive/2006/10/08/1326198.aspx
两个函数:

1、Get_StrArrayLength

CREATE function Get_StrArrayLength
(
 @str varchar(1024),  --要分割的字符串
 @split varchar(10)  --分隔符号
)
returns int
as
begin
 declare @location int
 declare @start int
 declare @length int

 set @str=ltrim(rtrim(@str))
 set @location=charindex(@split,@str)
 set @length=1
 while @location<>0
 begin
   set @start=@location+1
   set @location=charindex(@split,@str,@start)
   set @length=@length+1
 end
 return @length
end
 2、Get_StrArrayStrOfIndex


CREATE function Get_StrArrayStrOfIndex
(
 @str varchar(1024),  --要分割的字符串
 @split varchar(10),  --分隔符号
 @index int --取第几个元素
)
returns varchar(1024)
as
begin
 declare @location int
 declare @start int
 declare @next int
 declare @seed int

 set @str=ltrim(rtrim(@str))
 set @start=1
 set @next=1
 set @seed=len(@split)
 
 set @location=charindex(@split,@str)
 while @location<>0 and @index>@next
 begin
   set @start=@location+@seed
   set @location=charindex(@split,@str,@start)
   set @next=@next+1
 end
 if @location =0 select @location =len(@str)+1 
--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
 
 return substring(@str,@start,@location-@start)
end
3、应用:


set @next=1
while @next<=dbo.Get_StrArrayLength(@KeyWords,',')
    begin
        if  dbo.Get_StrArrayStrOfIndex(@KeyWords,',',@next)<>''
        set @strwhere   =  @strwhere +' or Keywords like ''%'+dbo.Get_StrArrayStrOfIndex(@KeyWords,',',@next)+'%'''
        set @next=@next+1
    end


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1326198




新文章
  • 经济危机,对派尔玻璃软件而言是件好事
    07、08混乱的玻璃加工管理软件市场,很多企业都因为形势好,上管理软件比较盲目,没有认真去调研。09年经济危机,势必大家对选型会更加认真。而派尔的先免费试用,正合了市场需求,大家可以先在企业运行好了再投资购买,真正地零风险。

  • 派尔推出免费玻璃优化软件
    派尔推出自己的优化软件,和派尔玻璃加工管理软件无缝集成,一键式优化。在订单输入尺寸后,点“套料”按钮,立马进行优化。使用方便,优化率高!欢迎使用,下载地址:http://2009.glassoo.com

  • 浙江中力节能玻璃制造有限公司成功实施派尔玻璃软件
    浙江中力节能玻璃制造有限公司成功实施派尔玻璃软件

  •  

    New Posts

  • 房子为谁而盖
    作者: lq on Thursday, July 10, 2008 (中)

  • 马云在《赢在中国》对创业者的经典点评
    作者: lq on Tuesday, March 11, 2008 (中)

  • 毛主席论营销(转)
    作者: lq on Monday, February 18, 2008 (中)



  • 派尔新闻 | 行业动态 | 典型用户 | 产品介绍 | 友情连接 | 用户讨论 | 常用计算 | 玻璃知识 | 公司证书 | 关于我们 | 交通指南 | 加盟派尔
    CopyRight®派尔2004-2008 总机:086+571-87858522 售前:87858586 87858579 售后:85354225 85354245

    浙ICP备06025955号