日期:2014-05-17  浏览次数:20567 次

SQL 截取字符串问题
这样一个字符串:12345/43212/43453
我需要截取从第一个字符开始到最后一个符号/这里为止。
之后再把截取出来的字符串中对应的/符号转换成-符号

希望得到的结果:12345-43212
SQL

------解决方案--------------------

declare @x varchar(50)

select @x='12345/43212/43453'

select replace(substring(@x,1,len(@x)-charindex('/',reverse(@x))),'/','-') 'x'

/*
x
------------------------
12345-43212

(1 row(s) affected)
*/

------解决方案--------------------
DECLARE @a VARCHAR(128)
SET @a='12345/43212/43453/43212//43212//43212//43212/43453'

SELECT REPLACE(SUBSTRING(@a,1,LEN(@a)-PATINDEX('%/%',REVERSE(@a))),'/','-')

/*
----------------------------------------------------------------------------------------------------------------
12345-43212-43453-43212--43212--43212--43212
*/

------解决方案--------------------

declare @d nvarchar(20)
set @d = '12345/43212/43453'

--select charindex('/',reverse(@d))

select replace(left(@d,len(@d) - charindex('/',reverse(@d))),'/','-')