zoukankan
html css js c++ java
SQL Server字符串分割
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
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
三、结合上边两个函数,象数组一样遍历字符串中的元素
create
function
f_splitstr(
@SourceSql
varchar
(
8000
),
@StrSeprate
varchar
(
100
))
returns
@temp
table
(F1
varchar
(
100
))
as
begin
declare
@ch
as
varchar
(
100
)
set
@SourceSql
=
@SourceSql
+
@StrSeprate
while
(
@SourceSql
<>
''
)
begin
set
@ch
=
left
(
@SourceSql
,
charindex
(
@StrSeprate
,
@SourceSql
,
1
)
-
1
)
insert
@temp
values
(
@ch
)
set
@SourceSql
=
stuff
(
@SourceSql
,
1
,
charindex
(
@StrSeprate
,
@SourceSql
,
1
),
''
)
end
return
end
--
--调用
select
*
from
dbo.f_splitstr(
'
1,2,3,4
'
,
'
,
'
)
--
结果:
1
2
3
4
查看全文
相关阅读:
枚举 + 进制转换 --- hdu 4937 Lucky Number
扫描线 + 线段树 : 求矩形面积的并 ---- hnu : 12884 Area Coverage
暴力枚举 + 24点 --- hnu : Cracking the Safe
dp or 贪心 --- hdu : Road Trip
数论
模拟 --- hdu 12878 : Fun With Fractions
图论 --- spfa + 链式向前星 : 判断是否存在正权回路 poj 1860 : Currency Exchange
图论 --- spfa + 链式向前星 (模板题) dlut 1218 : 奇奇与变形金刚
图论 --- 最小生成树 + 剪枝 + 路径合并
图论 ---- spfa + 链式向前星 ---- poj 3268 : Silver Cow Party
原文地址:https://www.cnblogs.com/pcmax/p/1578464.html
最新文章
Redis——windows下如何连接Linux(centos7.x)虚拟机的Redis——【二】
PHP——生成唯一序列号UUID
PHP——判断数组中是否有重复值并找出重复值
Redis——Linux(centos7.x)下Redi和PHP Redis插件安装——【一】
微信小程序——使用vue构建小程序【外传】
微信小程序——demo合集及简单的文档解读【五】
第三方登陆——QQ登陆详解
Java_JDBC一般写法
eclipse如何加入第三方jar包
Java需要强制捕获的异常
热门文章
比特币的交易过程
快速运行“预设”命令
实现酷炫的文字阴影
window.scroll原生滚动
跨平台设置NODE_ENV(兼容win和linux)
JWT简介
拓扑排序 --- hdu 4948 : Kingdom
STL : map函数的运用 --- hdu 4941 : Magical Forest
dp --- hdu 4939 : Stupid Tower Defense
Topcoder SRM 627 div1 HappyLettersDiv1 : 字符串
Copyright © 2011-2022 走看看