我正在寻找一种方法来做到这一点…
SELECT FirstName, LastName, Split(AddressBlock, ' ', 1), Split(AddressBlock, ' ', 2), PostCode FROM Contacts
我想传递的参数是…
我似乎能够找到一些有关互联网拆分功能的示例,但它们返回一个包含整个拆分部分集的表。
我的SQL技能不是很好,所以我需要答案非常简单。我一直在使用nvarchar数据,并且该功能需要可重用。
如果您希望用户定义的函数执行此操作,则应该可以使用。不是那么漂亮,但是…
CREATE FUNCTION dbo.SplitStringPart ( @input nvarchar(MAX), @separator nvarchar(10), @index int ) RETURNS nvarchar(MAX) BEGIN DECLARE @counter int, @position int, @oldposition int, @separatorlength int, @result nvarchar(MAX) SET @separatorlength = DATALENGTH(@separator) / 2 IF @separatorlength = 0 RETURN NULL SET @result = NULL SET @counter = 1 SET @position = -2 WHILE (@counter <= @index) BEGIN SET @oldposition = @position SET @position = CHARINDEX(@separator, @input, @position + 1) IF @position = 0 AND @counter < @index BEGIN SET @oldposition = 0 BREAK END SET @counter = @counter + 1 END IF @oldposition = 0 AND @position = 0 RETURN NULL ELSE IF @oldposition < 0 BEGIN IF @position = 0 AND @index = 1 SET @result = @input ELSE SET @result = SUBSTRING(@input, 0, @position) END ELSE IF @position <= 0 SET @result = SUBSTRING(@input, @oldposition + @separatorlength, LEN(@input) - @oldposition - @separatorlength) ELSE SET @result = SUBSTRING(@input, @oldposition + @separatorlength, @position - @oldposition - @separatorlength) RETURN @result END GO