`
seawavenews
  • 浏览: 231733 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

T-SQL象数组一样处理字符串、分割字符串

SQL 
阅读更多
T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。

一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
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
调用示例:select dbo.Get_StrArrayLength('78,1,2,3',',')
返回值:4

二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
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
调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)
返回值:9

三、结合上边两个函数,象数组一样遍历字符串中的元素

declare @str varchar(50)
set @str='1,2,3,4,5'
declare @next int  
set @next=1
while @next<=dbo.Get_StrArrayLength(@str,',')
begin
 print dbo.Get_StrArrayStrOfIndex(@str,',',@next)
 set @next=@next+1
end

调用结果:
1
2
3
4
5
分享到:
评论

相关推荐

    sqlserver 字符串分割、包含、匹配

    2、按指定符号分割字符串,返回“分割后指定索引的第几个元素”的值,象数组一样方便 3、检查一个元素是否在数组中,返回1或0 4、检查一个元素是否与数组中的相匹配,并返回相匹配的数组的值。参数值为0表示全模糊...

    瓷都取名网-象数抽签 1.2.rar

    瓷都取名网-象数抽签: 冥想抽签法:求测者将要测事情,按预测师所编程序,集中意念反复冥想所测事情的人事与结果,待万念归一后,分先后任意摘取三张签牌。 默念抽签法:求测者反复按预测师所编程序,默念所测...

    MySQL里实现类似SPLIT的分割字符串的函数

    下边的函数,实现了象数组一样去处理字符串。 一,用临时表作为数组 代码如下: create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@...

    八卦象数疗法-常见病配方文.pdf

    象数的读法同平常的读法完全一样。配方中有0,仍读零,如3810 读作三八一零,每秒钟念一个数。 2. 象数配方的结构。较简单的配方是一元结构,如160 或 80;较复杂的配方, 则是二元或三元结构,如 640.20 或 1260....

    象数疗法百病配方大全.doc

    象数疗法原理是易医结合的自然疗法,以易学的阴阳五行、八卦象数学说为核心,以中医的藏象理论为根底,通过默念一组象数疗疾健身的一种简捷疗法。八卦象数疗法的象数源于〞周易〞,象数是〞易学〞的根本内容。〞易&S...

    精品资料(2021-2022年收藏的)浅述八卦象数疗法配方实用操作方法耿文涛.docx

    一组合理的象数默念配方在默念的过程中,人体的机能即处于调节状态,体内细胞中相应的信息能量不断的积累增加,向病灶冲击时会有不适感,甚至原已病愈的部位又出现疼痛不适。出现这种情况,只要头、心、胃三处无不适...

    在线象数抽签求测(仅供娱乐)

    在线象数抽签求测方法: 1.冥想抽签法:求测者将要测事情,按预测师所编程序,集中意念反复冥想所测事情的人事与结果,待万念归一后,分先后任意摘取三张签牌。 2.默念抽签法:求测者反复按预测师所编程序,默念所...

    CToolBar的使用总结

    CToolBar 是 MFC 中的一个类,继承自 CWnd,用于创建工具条控件,工具条控件是具有位图和分隔符组成的一组命令按钮,位图按钮部分可以是下推按钮、检查盒按钮、无线按钮等。工具条对象类派生于主窗口架构类 ...

    主要是根据先天八卦图配合方位来进行象数计算的。

    标题中的“主要是根据先天八卦图配合方位来进行象数计算的”揭示了这是一个基于中国古代哲学思想——易经,尤其是先天八卦理论的程序。先天八卦,又称伏羲八卦,是中国古代哲学家伏羲根据自然现象创立的八卦模型,用...

    象数疗法治八十种疾病的方案.doc

    【象数疗法】是一种以数字为基础的非药物治疗方法,源于中国的传统医学理论,结合了易经的八卦原理和中医的脏腑学说。该疗法主张通过默念特定的数字组合来调整人体的能量平衡,以达到治疗疾病的目的。下面将详细解释...

    八卦象数疗法持念注意事项宣贯.pdf

    “八卦象数疗法持念注意事项宣贯” 八卦象数疗法是一种特殊的治疗方法,它基于中国古典医学的理论,通过默念特定的数字序列来治疗疾病。以下是八卦象数疗法的注意事项: 一、正确使用象数配方:在使用八卦象数疗法...

    象数疗法常见配方.doc

    象数疗法常见配方 象数疗法是基于中国古代的医学理论和数学算法,通过数值计算来调整人的身体机能,达到治疗和保健的目的。下面是象数疗法中的常见配方: 情绪调整 * 稳定情绪:800·700·260·050 * 克服劳累:...

    如何正确掌握八卦象数预测法的读象法.pdf

    "如何正确掌握八卦象数预测法的读象法" 摘要:本文讨论了如何正确掌握八卦象数预测法的读象法,强调了基础知识的重要性、 八卦象的特征和特性、读象思维的运用、卦象信息的积累和对应关系的掌握。文章还提出了 ...

    c语言的结构体c语言的结构体PDF

    C语言结构体 结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。...构成结构的每一个类型变量称为结构成员,它象数组的元素一样,但数组中元素是以下标来访问的,而结构是按变量名字来访问成员的。

    C++语言 STL容器list总结

    而遍历链表则有两种方式:通过索引访问,象数组一样处理;通过std::list&lt;&gt;::iterator链表遍历器进行访问 STL 中的list 就是一 双向链表,可高效地进行插入删除元素。 list不支持随机访问。所以没有 at(pos)和...

    明安图、董祐诚、项名达的无穷级数表示法研究

    第5章 项名达《象数一原》中的无穷级数表示法 第148-184页 5.1 项名达著《象数一原》的知识来源 第148-154页 5.2 《象数一原》中的无穷级数表示法 第154-180页 5.2.1 各图中的无穷级数表示法 第155-170页 5.2.2 ...

Global site tag (gtag.js) - Google Analytics