SQL字段截取求教
初学者运行截取两个f之间的字段,有没有更好的方法!本人不知道f第N次出现的位置怎么写,所以就弄了个本方法。求大神们授业解惑也!
declare @t char(100),@s char(100)
set @t='alfki77777777bfd'
set @s=substring(@t,patindex('%f%','alfkibfd')+1,len(@t))
print substring(@t,patindex('%f%',@t)+1,patindex('%f%',@s)-1)
字段:alfki77777777bfd
运行结果:ki77777777b SQL substring patindex
[解决办法]
declare @t varchar(100),@s varchar(100)
set @t='alfki77777777bfd'
set @s=substring(@t,charindex('f',@t,1)+1,len(@t)-charindex('f',reverse(@t),1)-charindex('f',@t,1))
select @s 's'
/*
s
----------------------
ki77777777b
(1 row(s) affected)
*/
declare @t char(100),@s char(100)
set @t='alfki77777777bfd'
set @s=substring(@t,patindex('%f%','alfkibfd')+1,len(@t))
print substring(@t,patindex('%f%',@t)+1,patindex('%f%',@s)-1)
--楼主的方法已经不错了
SELECT SUBSTRING(STUFF(@t,1,CHARINDEX('f',@t),''),1,CHARINDEX('f',STUFF(@t,1,CHARINDEX('f',@t),''))-1)
SELECT SUBSTRING(@t, CHARINDEX('f',@t)+1, LEN(@t) - CHARINDEX('f',@t) - CHARINDEX('f',REVERSE(RTRIM(@t))))
/*ki77777777b*/