在Sql server中最后一次出现特殊字符之前删除子字符串

时间:2015-06-10 09:22:30

标签: sql-server

我想在句号(.)的最后一次出现之前删除子字符串。查询应将r.k.Lee Brown转换为Lee Brown。所以,基本上我需要在最后一个点.之前的子串,并用''替换它。

3 个答案:

答案 0 :(得分:9)

试试这个:

SELECT RIGHT(@str, CHARINDEX('.', REVERSE(@str)) - 1)

您可以使用以下方法稍微修改上述内容:

REVERSE('.' + @str))

而不是

REVERSE(@str)

以防'.'中有 @str

答案 1 :(得分:0)

喜欢这个

declare @a as nvarchar(100)='r.k.Lee Brown'
select reverse(substring(reverse(@a),0,charindex('.',reverse(@a))))

编辑:

如果字符串中没有'.'

declare @a as nvarchar(100)='r.k.Lee Brown'
select reverse(substring(reverse(@a),0,charindex('.',reverse('.'+@a))))

set @a = 'Lee Brown'
select reverse(substring(reverse(@a),0,charindex('.',reverse('.'+@a))))

答案 2 :(得分:0)

使用REVERSE和子串函数:

DECLARE @var VARCHAR(50) = 'r.k.Lee Brown'

SELECT Reverse(Substring(Reverse(@var), 0, Charindex('.', Reverse(@var))))