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...
/////
//////////////////////////////
查看全文
相关阅读:
Java操作redis
ExtJs6编译之后上线报错无法查看到的解决方法
使用idea开发工具,nginx服务部署Extjs6,SpringBoot项目到服务器
跨域拦截Access-Control-Allow-Origin设置多个origin
ExtJs6内嵌iframe,nginx部署本地前台文件
基于resteasy,Base64码上传文件
resteasy上传单个文件/多个文件到阿里云服务器
win7 系统保留分区 BCDedit
Ubuntu Linux系统下apt-get命令详解
Linux 查看 硬件配置
原文地址:https://www.cnblogs.com/sixiweb/p/1386610.html
最新文章
iOS UITextView 输入内容实时更新cell的高度
iOS项目的完整重命名方法图文教程
一个Demo展示Storyboard的强大
storyboard设置navigation controller
动态修改UINavigationBar的背景色
Xcode集成POD教程
App Store App申请审核加速
android:android:background="#00000000",透明效果
Android中的Selector的用法
Android:创建文件或文件夹以及获取sd卡根目录
热门文章
SAX方式解析XML
Http方式获取网络数据
Mars的mp3实例
Android:ViewPager04
Android:Notification的生成与取消
Android的回调
Android:ServiceDemo
Java给树加子节点个数统计
WINDOWS安装mysql5.7.20
Ajax嵌套Ajax的模版
Copyright © 2011-2022 走看看