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...
/////
//////////////////////////////
查看全文
相关阅读:
[译]《Sphinx权威指南》
sphinx 配置文件全解析
利用 crontab 來做 Linux 固定排程
http协议中用于上传多个文件的 multipart 字段
Python 代码覆盖率统计工具 coverage.py
Disruptor 基础篇
NPM:常用命令的生命周期脚本
十大经典排序算法(动图演示)【转】
TypeScript Jest 调试
NPM: 日常开发环境配置
原文地址:https://www.cnblogs.com/sixiweb/p/1386610.html
最新文章
红黑树并没有我们想象的那么难(下)
红黑树并没有我们想象的那么难(上)
Django 源码小剖: 响应数据 response 的返回
Django 源码小剖: 更高效的 URL 调度器(URL dispatcher)
Django 源码小剖: URL 调度器(URL dispatcher)
快手解析视频真实链接(爬取快手视频)
关闭window弹出的各种广告
No module named 'torch'
Python实现发送邮件
Android关闭自定义相机快门声
热门文章
Andorid 录制视频结果旋转
Android 摄像头清晰度参数调节
Android 多线程3秒执行一次
Android拍照丶录制视频功能实现
GPU训练网络参数时查看GPU的使用情况
openssl 非对称加密算法RSA命令详解
linux netcat 命令详解
linux /proc/sys/vm/中各个文件含义
POP3、SMTP和IMAP之间的区别和联系
sphinx续5-主索引增量索引和实时索引
Copyright © 2011-2022 走看看