转载地址:http://www.blogjava.net/supercrsky/articles/260998.html
T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。
一,用临时表作为数组。
createfunctionf_split(
@cvarchar(
2000),
@splitvarchar(
2))
returns@ttable(col
varchar(
20))
asbeginwhile(
charindex(
@split,
@c)
<>0)
begininsert@t(col)
values(
substring(
@c,
1,
charindex(
@split,
@c)
-1))
set@c=stuff(
@c,
1,
charindex(
@split,
@c),
'')
endinsert@t(col)
values(
@c)
returnendgoselect*fromdbo.f_split(
'dfkd,dfdkdf,dfdkf,dffjk',
',')
dropfunctionf_split
col
--------------------
dfkd
dfdkdf
dfdkf
dffjk
(所影响的行数为 4 行)二、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
调用示例:
selectdbo.Get_StrArrayLength(
'78,1,2,3',
',')
返回值:4三、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
CREATEfunctionGet_StrArrayStrOfIndex
(
@strvarchar(
1024),
--要分割的字符串
@splitvarchar(
10),
--分隔符号
@indexint--取第几个元素
)
returnsvarchar(
1024)
asbegindeclare@locationintdeclare@startintdeclare@nextintdeclare@seedintset@str=ltrim(
rtrim(
@str))
set@start=1set@next=1set@seed=len(
@split)
set@location=charindex(
@split,
@str)
while@location<>0and@index>@nextbeginset@start=@location+@seedset@location=charindex(
@split,
@str,
@start)
set@next=@next+1endif@location=0select@location=len(
@str)
+1--这儿存在两种情况:1、字符串不存在分隔符号2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
returnsubstring(
@str,
@start,
@location-@start)
end
调用示例:
selectdbo.Get_StrArrayStrOfIndex(
'8,9,4',
',',
2)
返回值:9三、结合上边两个函数,象数组一样遍历字符串中的元素
declare@strvarchar(
50)
set@str='1,2,3,4,5'declare@nextintset@next=1while@next<=dbo.Get_StrArrayLength(
@str,
',')
beginprintdbo.Get_StrArrayStrOfIndex(
@str,
',',
@next)
set@next=@next+1end
调用结果:
12345//-------------------------------------------------------------------------------------------------------------------------
selectf1,f2,f3,
left(A,
charindex(
'_',A)
-1)
from表名
orderbyleft(A,
charindex(
'_',A)
-1)
分享到:
相关推荐
2、按指定符号分割字符串,返回“分割后指定索引的第几个元素”的值,象数组一样方便 3、检查一个元素是否在数组中,返回1或0 4、检查一个元素是否与数组中的相匹配,并返回相匹配的数组的值。参数值为0表示全模糊...
plsql分割字符串
Oracle_Sql_中常用字符串处理函数
SQL截取字符串函数(1、截取从字符串左边开始N个字符 2、截取从字符串右边开始N个字符(例如取字符www.163.com) 3、截取字符串中任意位置及长度 等等)
sqlserver中根据某个字符切割字符串函数,比如根据逗号切割字符串,结果返回的是一个表值函数,这个函数返回结果字段包含Id和Value,Id为序号,Value为切割后的值
用 逗号等分隔符 分开的字符串数量 比如 aaa,bbb,ccc 输出3
将字符串按某个固定字符拆分成一个表结构(value,id) eg:1,2,3,3,4 拆分后: value id 1 1 2 2 3 3 3 4 4 5
SQL 字符串处理函数 获取指定的字符
自己写了一个function 用于处理拆分时的逻辑运算,性能比网上找的快好几倍, 代码和说明:https://blog.csdn.net/jimyao37/article/details/123522885
SQL SERVER 里面很好用的一个分割函数 喜欢大家喜欢
SQL语句字符串分割
aaa,bbb,ccc n=2时 截取结果 bbb 很明白了吧 哈
SQL Server字符串处理函数大全 select 字段1 from 表1 where 字段1.IndexOf("云")=1; 这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了。 left()是sql函数。 select 字段1 from ...
SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数
SQLServer数据库中创建字符串截取功能(Split),调用方法: Split(string,str)
用SQL语句截取字符串, string substr ( string string, int start [, int length]) 参数1:处理字符串 参数2:截取的起始位置(第一个字符是从0开始) 参数3:截取的字符数量
SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作...
ms sql server 字符合计,类似sum函数的功能,不过是针对字符型!
MS_SQL_Server_数据库连接字符串详解