- 浏览: 496271 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1028)
- [发布至博客园首页] (826)
- [随笔分类]个人生活随笔 (14)
- [网站分类]首页候选区 (26)
- [网站分类]SharePoint (15)
- [网站分类]其他技术区 (6)
- [随笔分类]批处理技巧 (6)
- [随笔分类].net 2.0 (3)
- [随笔分类]SharePoint2007(MOSS2007) (0)
- [网站分类].NET新手区 (6)
- [网站分类]ASP.NET (6)
- [网站分类]架构设计 (18)
- [网站分类]程序人生 (2)
- [网站分类]SQL Server (2)
- WCF (3)
- 编程技巧 (2)
- 模式架构 (2)
- 分析设计 (4)
- 生活随笔 (0)
- 软件工程 (1)
- Android实例 (2)
最新评论
-
zilong0536:
楼主您好:
请问发表博文支持图片的功能怎么实现啊,一直没有思路 ...
新浪微博开放平台开发-android客户端(3) -
nicegege:
小弟 学习了
帮助中国移动设计10086的排队小模块 -
zl7824516:
用什么技术没说啊
通告(公告),消息(站内短信),提醒的设计:通告 -
virusswb:
源码下载: SinaWeibo2 源码下载之后,将后缀改为ra ...
新浪微博开放平台开发-android客户端(3) -
Jimmyxu0311:
找不到源码下载
新浪微博开放平台开发-android客户端(3)
大家在T-SQL中使用substring的时候需要注意一点,T-SQL的第一个字符的
下标是从1开始的,不像在C#中第一字符是从0开始的。
原文地址:SQL字符串数组操作
文章出处:DIY部落(http://www.diybl.com/course/7_databases/sql/sqlServer/2007106/76999.html)
/*
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
--Alter function Get_StrArrayLength
create function Get_StrArrayLength
(
@str varchar(5000), --要分割的字符串
@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
调用示例:select dbo.Get_StrArrayLength('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48',',')
返回值:4
二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
--alter function Get_StrArrayStrOfIndex
create function Get_StrArrayStrOfIndex
(
@str varchar(5000), --要分割的字符串
@split varchar(10), --分隔符号
@index int --取第几个元素
)
returns varchar(5000)
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
调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)
返回值:9
三、结合上边两个函数,象数组一样遍历字符串中的元素
declare @str varchar(5000)
set @str='1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48'
print dbo.Get_StrArrayLength(@str,',')
declare @next int
set @next=1
while @next<=dbo.Get_StrArrayLength(@str,',')
begin
print dbo.Get_StrArrayStrOfIndex(@str,',',@next)
set @next=@next+1
end
print dbo.CheckStrInArr('21',@str)
调用结果:
1
2
3
4
5
四、自己加一个函数,检查一个元素是否在数组中
Alter function CheckStrInArr(@s as varchar(50),@sArr as varchar(5000)) returns int
as
begin
declare @str varchar(5000)
set @str=@sArr
declare @next int
declare @ret int
set @ret=0
set @next=1
while @next<=dbo.Get_StrArrayLength(@str,',')
begin
if dbo.Get_StrArrayStrOfIndex(@str,',',@next)=@s
begin
set @ret=1;
end
set @next=@next+1
end
return @ret
end
*/
文章出处:DIY部落(http://www.diybl.com/course/7_databases/sql/sqlServer/2007106/76999.html)
原文地址:SQL实现split功能的函数
文章出处:DIY部落(http://www.diybl.com/course/7_databases/sql/sqlServer/2007106/77000.html)
分割再成批插入
declare @s varchar(8000),@sql nvarchar(4000)
set @s='1,12,1212,4545'
set @sql='insert into t(col) select '+replace(@s,',',' col union all select ')
exec(@sql)
测试
drop table #table
declare @s varchar(8000),@sql nvarchar(4000)
set @s='1,12,1212,4545,454'
create table #table (col int)
set @sql='insert into #table(col) select '+replace(@s,',',' col union all select ')
exec(@sql)
select * from #table
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end
用法:select * from dbo.f_split('ABC:BC:C:D:E',':')
文章出处:DIY部落(http://www.diybl.com/course/7_databases/sql/sqlServer/2007106/77000.html)
发表评论
-
《深入浅出设计模式-中文版》读书笔记 策略模式(二)
2010-07-02 07:25 775接着上回的“针对接口编程,不针对实现编程”原则说。 假 ... -
《深入浅出设计模式-中文版》读书笔记 策略模式(二)
2010-07-02 07:25 738接着上回的“针对接口编程,不针对实现编程”原则说。 假 ... -
NET 应用架构指导 V2 学习笔记(十二) 业务逻辑层的设计步骤
2010-06-01 00:07 478部署方面的考虑 当部署业务逻辑层的时候,一定要考虑生产 ... -
NET 应用架构指导 V2 学习笔记(二十一) 设计业务实体
2010-06-08 07:05 455概况 业务实体 ... -
分页存储过程(五)在MS SQL Server中打造更加准确,且有一点效率提升的的分页结果
2010-06-08 08:38 560以前的分页我都是 ... -
NET 应用架构指导 V2 学习笔记(二十二) 设计数据访问组件
2010-06-09 06:53 431概况 数据层组 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 1482我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 635以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 7501、Silverlight应用类型 •RIA Rich I ... -
【转载】利用SQL的charindex实现字符串数组和Split函数
2010-03-13 12:57 1100大家在T-SQL中使用substring的时候需要注意一点 ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 468最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 283最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 3262我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 734以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 6151、Silverlight应用类型 •RIA Rich I ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 460最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 2114我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 813以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 7251、Silverlight应用类型 •RIA Rich I ... -
【转载】利用SQL的charindex实现字符串数组和Split函数
2010-03-13 12:57 972大家在T-SQL中使用substring的时候需要注意一点 ...
相关推荐
2. **动态字符串分割函数**:另一种实现方式是使用动态SQL语句构建函数,例如`f_split`函数。它通过不断查找并替换分隔符,直到原字符串中不再包含分隔符为止,从而实现字符串的完全分割。这种方式特别适用于分割由...
综上所述,SQL Server虽然没有内置的`SPLIT`函数,但通过`STRING_SPLIT`、自定义函数或组合其他内置函数,我们可以实现类似的功能,满足各种字符串处理需求。在实际应用中,需要根据具体环境和需求选择合适的方法。
本文将详细介绍如何在SQL Server中实现`split`函数来分割字符串,并提供相关的使用示例。 首先,让我们了解这个自定义的`split`函数——`[dbo].[f_SplitToNvarchar]`。这个函数接受两个参数: 1. `@SourceSql`:这...
本篇文章将详细介绍如何利用SQL Server自定义函数实现字符串拆分并转化为表格形式的功能。 #### 核心知识点 1. **自定义函数(User Defined Function, UDF)**: - 在SQL Server中,可以通过创建自定义函数来执行...
本篇文章将详细介绍如何利用SQL语言实现这一功能,具体来说是如何编写一个SQL函数来计算给定字符串中由特定分隔符分隔出的子字符串的数量。 #### 题目背景 在实际应用场景中,有时会遇到存储了多个值的字符串字段...
### SQL2000 字符串分割方法解析 在处理大量数据时,经常...此外,随着SQL Server版本的不断更新,后续版本中还提供了更多方便的内置函数来进行字符串操作,如`STRING_SPLIT()`等,使得字符串处理变得更加便捷高效。
本文将详细介绍一个自定义的SQL函数`StringToTable`,该函数能够实现字符串分割的功能,并将结果存储在一个临时表中以便后续查询或处理。 #### 函数定义 ```sql CREATE FUNCTION StringToTable( @StringX varchar...
SQL并没有内置的SPLIT函数,但可以通过自定义函数来实现这个功能。这里我们将讨论两种在SQL中实现SPLIT函数的方法。 **方法1** 首先,我们来看第一种实现方式,创建名为`f_split`的用户定义函数(UDF)。这个函数...
### SQL Server 字符串分割函数实现 在处理SQL Server中的数据时,经常需要对字符串进行分割操作以提取有用的信息。本文将详细介绍一个SQL Server自定义函数`f_split`,该函数能够有效地帮助用户完成字符串分割任务...
本文介绍了如何在SQL Server环境中实现一个支持Ntext类型字符串输入的自定义Split函数。通过这个函数,我们可以轻松地将大型文本数据分割成多个部分,这对于处理复杂的数据集非常有用。希望本文能对您理解和应用...
2. 利用 SQL Server 函数进行字符串拆分:可以使用 SQL Server 的字符串函数,例如 CHARINDEX、LEFT、RIGHT、LEN 等函数对字符串进行拆分。 3. 将拆分后的数据写入到临时表中:将拆分后的数据写入到第 1 步中创建的...
本文将深入探讨SQL Server中的字符串切割函数,特别是如何创建和使用用户定义函数来实现这一功能。 首先,我们要明白用户定义函数(User-Defined Function, UDF)的概念。用户定义函数允许开发人员自定义一套逻辑,...
SQL实现Split函数的脚本是指使用SQL语言创建一个函数,以实现将一个字符串按照指定的分隔符拆分成多个子字符串,并将其返回为一个表的形式。下面是该函数的详细介绍。 函数定义 首先,我们需要定义一个函数,函数...
在SQL中,处理字符串时确实不如其他编程语言那样灵活,...以上就是在MySQL中实现类似SPLIT功能的方法,虽然不如某些编程语言直接支持数组那样方便,但通过自定义函数和巧妙的逻辑,我们仍然可以有效地处理分隔字符串。
SQL 字符串分割函数实现多行数据转换 在数据库中,经常会遇到将一个字段中的特殊字符分割的字符串转换成多行数据的情况。这是一个常见的需求,但是网上提供的解决方案往往非常复杂,难以理解和实现。为了解决这个...
这里提到的`f_split`函数就是一个自定义的用户定义函数(UDF),用于实现字符串的分割功能。这个函数非常实用,尤其对于那些在标准SQL功能中无法轻易实现字符串分割操作的情况。 `f_split`函数的基本结构如下: ``...
在SQL Server 2016及更高版本中,引入了`STRING_SPLIT`函数,这使得字符串拆分变得更加简单和高效。 总结起来,SQL Server 2008中拆分字符串通常需要自定义解决方案,如上述的交叉连接方法。虽然这个方法可以工作,...
以上是SQL中实现字符串分割的几种方法,它们利用了字符串处理函数如`CHARINDEX`, `SUBSTRING`, `STUFF`等,以及循环结构,可以灵活地对字符串进行操作,满足各种需求。在实际应用中,这些自定义函数可以极大地提升...