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