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...
/////
//////////////////////////////
查看全文
相关阅读:
【Hive】HiveQL:数据定义
【Hive】Hive安装与配置
【Hadoop】Hadoop 2.7.6安装_伪分布式集群
【RMAN】单实例环境RMAN备份和还原
【SQL开发】Oracle 11g 分区技术
【SQL开发】使用绑定变量 VS 不使用绑定变量
MySQL索引最左前缀原则导致系统瘫痪
阿里云RDS在线DDL工具gh-ost
centos7下MongoDB3.4安装并解决告警
ibtmp1文件过大
原文地址:https://www.cnblogs.com/sixiweb/p/1386610.html
最新文章
SequoiaDB x Spark 新主流架构引领企业级应用
演讲实录:“分布式数据库海量数据存储和实时查询实现与应用”
新手福音:巨杉数据库教程专区上线啦!
关于MongoDB安全事件的一些思考
SequoiaDB版本在线升级介绍说明
【案例分享】SequoiaDB+Spark搭建医院临床知识库系统
分布式数据库修炼之路
【技术解密】SequoiaDB分布式存储原理
文档模型(JSON)使用介绍
如何在centos操作系统上发布.net core的项目
热门文章
谈谈我对反向代理的理解
剑指offer面试题48: 最长不含重复字符的子字符串
C#解析HTML利器-Html Agility Pack
<<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步(1)
用亲身经历告诉你,在你的并发程序代码块中,最好最好不要有引用类型
关于并发下内存及CPU使用情况的思考
【Sqoop1】Sqoop1实战之导出Sqoop export
【Sqoop1】Sqoop1实战之导入Sqoop import
【Sqoop1】Sqoop1安装
【Hive】HiveQL:数据操作
Copyright © 2011-2022 走看看