每当我在表格中遇到它们时,我都试图消除中间名首字母:
例如,如果我有John D Doe,我希望我的查询返回John Doe。这是我的询问。
declare @Name varchar(100);
select @Name = 'James D Doe';
select left(@Name, len(@Name)-charindex(' ', @Name,0))+' '+right(@Name, charindex(' ', @Name,0));
现在我的查询返回完整的字符串。每当遇到它们时,我如何剥离中间名首字母?我想要的输出是James Doe。
答案 0 :(得分:1)
这应该适用于您只有一个中间名(或首字母)的特定用例:
SELECT CASE WHEN LEN(REPLACE(@Name, ' ', '')) = LEN(@Name) - 2
THEN
CONCAT(SUBSTRING(@Name, 1, CHARINDEX(' ', @Name, 0)),
SUBSTRING(@Name,
CHARINDEX(' ', @Name, CHARINDEX(' ', @Name, 0) + 1) + 1,
LEN(@Name) - CHARINDEX(' ', @Name, CHARINDEX(' ', @Name, 0) + 1)),
ELSE @Name
END