zoukankan
html css js c++ java
[转载]TSQL象数组一样处理字符串
--
====================================================
--
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
--
=================
////////////////////////////////
////////Sixi.
Let it be...
/////
//////////////////////////////
查看全文
相关阅读:
单臂路由
vlan(虚拟局域网)划分
Android开发环境搭建
Android-SDK和ADT下载地址
java se11版本及以上没有jre的解决办法
RIP协议(动态路由协议)
Android(安卓)开发环境搭建
java开发工具
Java开发环境配置
数据结构--循环队列
原文地址:https://www.cnblogs.com/sixiweb/p/1386610.html
最新文章
P4884 多少个一
SPLAY 未完待咕
树链剖分
QT获取系统当前时间
QT即时计时器
Ogre动画加载之节点动画、mesh动画及骨骼动画加载方法
Opengl ES 1.x NDK实例开发之六:纹理贴图
Opengl ES 1.x NDK实例开发之五:顶点缓存VBO
Opengl ES 1.x NDK实例开发之四:立方体的旋转
Opengl ES 1.x NDK实例开发之三:多边形的旋转
热门文章
Opengl ES 1.x NDK实例开发之二:颜色的使用
Opengl ES 1.x NDK实例开发之一:搭建开发框架
与智者同行,你会不同凡响;与高人为伍,你能登上巅峰
Linux学前知识2
linux学前小结
Day005作业
Day004作业
Day004课程内容
列表,字典,集合
Python中流程控制语句之IF语句
Copyright © 2011-2022 走看看