2014-10-27 120 views
1

我有一小段代码需要一遍又一遍地执行。我将一个字符串分为第一个,中间和最后一个名字。在SQL中返回固定数量值的最有效方法

DECLARE @SpaceIndex int, 
    @LastSpaceIndex int, 
    @Length int 

SET @Length = LEN(@Name) 
SET @LastSpaceIndex = @Length - CHARINDEX(' ', REVERSE(@Name)) 
Set @SpaceIndex = CHARINDEX(' ', @Name) 

    SELECT SUBSTRING(@Name, 0, @SpaceIndex) As FirstName, 
     SUBSTRING(@Name, @SpaceIndex + 1, @LastSpaceIndex - @SpaceIndex) As MiddleName, 
     SUBSTRING(@Name, @LastSpaceIndex + 1, @Length - @LastSpaceIndex) As LastName 

我决定把它变成一个表格函数或带有输出参数的存储过程,但我不确定哪种方法更好。

在SQL中返回三个值的最佳方法是什么?

仅供参考名称可以是这样的: “李四”,“李四”,“约翰·w ^李四”,“简Whilma爱丽丝母鹿”

感谢

+0

不知道关于 “更好”,但我通常喜欢在存储过程的功能,这样我可以使用'APPLY'。 – 2014-10-27 20:43:11

回答