小编典典

获取SQL字符串中每个单词的第一个字母

sql

在中MS-SQL Server,有没有一种方法可以获取字符串中每个单词的第一个字母?例如:

姓名:

迈克尔·约瑟夫·杰克逊

询问:

SELECT name, [function] as initial FROM Customers

结果:

MJJ


阅读 244

收藏
2021-04-22

共1个答案

小编典典

此函数将针对源字符串中的多个连续空格屏蔽您的结果:

CREATE FUNCTION dbo.fnFirsties ( @str NVARCHAR(4000) )
RETURNS NVARCHAR(2000)
AS
BEGIN
    DECLARE @retval NVARCHAR(2000);

    SET @str=RTRIM(LTRIM(@str));
    SET @retval=LEFT(@str,1);

    WHILE CHARINDEX(' ',@str,1)>0 BEGIN
        SET @str=LTRIM(RIGHT(@str,LEN(@str)-CHARINDEX(' ',@str,1)));
        SET @retval+=LEFT(@str,1);
    END

    RETURN @retval;
END
GO

SELECT dbo.fnFirsties('Michael Joseph Jackson');
SELECT dbo.fnFirsties('  Michael   Joseph Jackson  '); -- multiple space protection :)

结果:

MJJ
MJJ
2021-04-22