如下麵這個樣子: 本函式是學習使用WHILE以及SUBSTRING的應用: CREATE FUNCTION [dbo].[svf_SplitStringToSingleCharacter]( @DataSource NVARCHAR(4000) ) RETURNS NVARCHAR(4000) AS ...
如下麵這個樣子:
本函式是學習使用WHILE以及SUBSTRING的應用:
CREATE FUNCTION [dbo].[svf_SplitStringToSingleCharacter]( @DataSource NVARCHAR(4000) ) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @rtvResult NVARCHAR(4000),@length INT SET @length = lEN(ISNULL(@DataSource,'')) IF @length = 0 SET @rtvResult = N'' ELSE BEGIN WHILE @length > 0 BEGIN SET @rtvResult = ISNULL(@rtvResult + ',',N'') + '''' + SUBSTRING(@DataSource,@length,1) + '''' SET @length = @length - 1 END END RETURN @rtvResult ENDSource Code
上面的自定義的函數,在執行之後所得到的結果,並沒有按照輸入的順序排列。
那Insus.NET可以修改一下:
CREATE FUNCTION [dbo].[svf_SplitStringToSingleCharacter1]( @DataSource NVARCHAR(4000) ) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @rtvResult NVARCHAR(4000),@length INT SET @length = lEN(ISNULL(@DataSource,'')) IF @length = 0 SET @rtvResult = N'' ELSE BEGIN DECLARE @i INT = 1 WHILE @i <= @length BEGIN SET @rtvResult = ISNULL(@rtvResult + ',',N'') + '''' + SUBSTRING(@DataSource,1,1) + '''' SET @DataSource = STUFF(@DataSource,1,1,N'') SET @i = @i + 1 END END RETURN @rtvResult END GOSource Code
再來看看執行的結果: