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...
/////
//////////////////////////////
查看全文
相关阅读:
转:javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 解决方案
Elementui 导航组件和Vuejs路由结合
python 在线生成文字云
TensorFlow创建简单的图片分类系统--机器学习
kettle maven 配置
Kettle api 二次开发之 日志的保存
heatmap for arcgisjsapi
Spring MVC 使用tomcat中配置的数据源
点坐标旋转方法
在servlet中使用Spring注入
原文地址:https://www.cnblogs.com/sixiweb/p/1386610.html
最新文章
python
python
python
python
mybatis-03-一对多关系映射(附源码)
mybatis-02-mapper生成器插件使用
mybatis-01-基本流程
springboot+shiro 02
springboot+shiro 01
MyBatis Plus 2.3 个人笔记-01-代码生成器
热门文章
SpringCloud个人笔记-03-Config初体验
centos 后台 运行jar包方法
SpringCloud个人笔记-02-Feign初体验
SpringCloud个人笔记-01-Eureka初体验
启动memcache
building for production...Killed
JavaScript在浏览器中把文本保存为文件的方法
oracle 导出空表问题
清空oracle session
两点的方位角
Copyright © 2011-2022 走看看