declare @str varchar(20)
set @str ='A,B,C,D'
select left(@str,charindex(',',@str)-1) --得到A
select left(substring(@str,charindex(',',@str)+1,len(@str)),charindex(','
,substring(@str,charindex(',',@str)+1,len(@str))
)-1) --得到B
select
reverse(
left(substring(reverse(@str),charindex(',',reverse(@str))+1,len(reverse(@str))),
charindex(',',substring(reverse(@str),charindex(',',reverse(@str))+1,len(reverse(@str))))-1)) --得到C
select substring(reverse(@str),1,charindex(',',reverse(@str)) - 1) --得到D
select reverse(substring(reverse(@str),1,charindex(',',reverse(@str)) - 1)) --得到D
select substring(@str,charindex(',',@str)+1,len(@str)) --得到B,C,D
--加CAST判断
declare @str varchar(20)
set @str ='224729,221729,222729,223729'
select CASE when charindex(',',@str)>=0 then left(@str,charindex(',',@str)-1) else '0' end --得到A
declare @str varchar(20)
set @str ='224729,221729,222729,223729'
select CASE when charindex(','
,substring(@str,charindex(',',@str)+1,len(@str))
)>=0 then left(substring(@str,charindex(',',@str)+1,len(@str)),charindex(','
,substring(@str,charindex(',',@str)+1,len(@str))
)-1) else '0' end --得到B
declare @str varchar(20)
set @str ='224729,221729,222729,223729'
select CASE when charindex(','
,substring(reverse(@str),charindex(',',reverse(@str))+1,len(reverse(@str)))
)>0 then
reverse(left(substring(reverse(@str),charindex(',',reverse(@str))+1,len(reverse(@str))),charindex(','
,substring(reverse(@str),charindex(',',reverse(@str))+1,len(reverse(@str)))
)-1))
else '0' end ---得到C
declare @str varchar(20)
set @str ='224729,221729,222729,223729'
select CASE when charindex(',',@str)>0 then right(@str,charindex(',',@str)-1) else '0' end --得到D
Sql 根据逗号分隔出目标字符
最新推荐文章于 2024-03-24 19:49:34 发布