SQL 分离字符串

SQL 分离字符串

作者:谢景,撰写时间:2019-2-13
在做项目中,我们常常需要对一段字符串进行分离,例如:i,you,my live中获取我们需要的数据,
在C#中,字符串直接分离成数组,简单易懂,但是SQL中没有数组,想把字符串分离需要的数据有些费脑,小编上网查找资料并总结出方法。下面讲解一下思路!
首先,介绍一下会用到的函数及用法:
1、LEN() 函数:
解释:返回文本字段中值的长度。
eg:

LEN('1234')  //返回4      

2、CHARINDEX() 函数:
解释:CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置
CHARINDEX ( x , y, [len] )
注意:x是要到y中寻找的字符中,len是CHARINDEX函数开始在y中找x的位置。
CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如CHARINDEX没有找到要找的字符串,那么函数整数“0”
eg:

CHARINDEX('Q', 'SQL Server',0)  //返回 2(从零开始查找)

3、SUBSTRING( )函数:
解释:SUBSTR (str, pos, len)
由 str 中的第 pos 位置开始,选出接下去的 len 个字元。
eg:
SUBSTR('abcd',1,2) //返回ab

数据库代码如下:

declare  @str varchar(100)
set @str ='i,you,my live'
declare @numer int
set @numer=0
declare @index int
set @index=(Len(@str) - 
Len(Replace(@str,',','')))/Len(',')
declare @i int
set @i=0
declare @lenght int
while  @numer<@index
BEGIN
set @numer=@numer+1
begin
set @lenght=CHARINDEX(',', @str,@i+1)*1-(@i+1)
end
print 'value:'+SUBSTRING(@str,@i+1,@lenght)
set @i=(CHARINDEX(',',@str,@i+1))
end
begin
print 'value:'+SUBSTRING(@str,@i+1,1000)
end

@index是获取逗号把字符串分割成多少份;
@i等于逗号的索引位置,
CHARINDEX(’,’, @str,@i+1)是获取下一个逗号的索引位置,后者减前者等于两个逗号之间的字符长度,然后用SUBSTRING(@str,@i+1,@lenght)获取字符即可。
结果如下图:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值