我有一個名爲Spool的表,並且有一個名爲「NAME」的字段。該字段有一個由破折號分隔的7個值的字符串。基於另一個字段填充表中的字段的腳本
我必須在SQL Server中執行一個腳本,用短劃線分隔字符串「NAME」並記錄7個不同列中的7個值。
例如 名稱:ABCD-0123-ASD 在COLUMN1必須記錄ABCD,在列2:0123和欄3 ASD ..等 我希望我已經解釋=)
謝謝!
我正在使用SQL 2008,也是在我真正的問題中,我的字符串「NAME」中有7段,我必須將該字段的每個段放在7列中。
此外,我有表中的記錄n個至極適用該腳本=) 感謝您幫助
HI杜威我有這樣的:
Create FUNCTION [dbo].[SPReturnThreeFields] (@str NVARCHAR(max), @delimiter NCHAR(1))
AS
BEGIN
declare @strOriginal NVARCHAR(max), @f1 varchar(max), @f2 varchar(max), @f3 varchar(max), @f4 varchar(max),@f5 varchar(max),@f6 varchar(max),@f7 varchar(max), @bool int = 0;
-- Field 1
set @f1=(left(@str,CHARINDEX(@delimiter,@str,1)-1));
SET @str=RIGHT(@str,LEN(@str)-CHARINDEX(@delimiter,@str,1));
-- Field 2
set @f2=(left(@str,CHARINDEX(@delimiter,@str,1)-1));
SET @str=RIGHT(@str,LEN(@str)-CHARINDEX(@delimiter,@str,1));
-- Field 3
set @f3 = (left(@str,CHARINDEX(@delimiter,@str,1)-1));
SET @str=RIGHT(@str,LEN(@str)-CHARINDEX(@delimiter,@str,1));
set @f4 = (left(@str,CHARINDEX(@delimiter,@str,1)-1));
SET @str=RIGHT(@str,LEN(@str)-CHARINDEX(@delimiter,@str,1));
set @f5 = (left(@str,CHARINDEX(@delimiter,@str,1)-1));
set @bool = case when patindex('%' + @delimiter + '%' , @str) <> 0 then 0 else 1 end;
SET @str= case when @bool = 0 then RIGHT(@str,LEN(@str)-CHARINDEX(@delimiter,@str,1)) else @str end;
set @f6 = case when patindex('%' + @delimiter + '%' , @str) < 1 then case when @bool = 0 then @str else '' end else (left(@str,CHARINDEX(@delimiter,@str,1)-1)) end;
set @bool = case when patindex('%' + @delimiter + '%' , @str) <> 0 then 0 else 1 end;
SET @str= case when @bool = 0 then RIGHT(@str,LEN(@str)-CHARINDEX(@delimiter,@str,1)) else @str end;
set @f7 = case when patindex('%' + @delimiter + '%' , @str) < 1 then case when @bool = 0 then @str else '' end else (left(@str,CHARINDEX(@delimiter,@str,1)-1)) end;
--update dbo.Spool SET Segmento1 = @f1,Segmento2 = @f2,Segmento3 = @f3,Segmento4 = @f4, Segmento5 = @f5, Segmento6 = @f6, Segmento7 = @f7 where Nombre = @strOriginal;
END
GO
顯然,它工作正常但是如果我想在同一個表中進行更新,如何調用函數或必須是存儲過程呢? 感謝您的幫助!
請寫明您使用的SQL Server版本。 – 2012-02-21 01:34:57
我正在使用SQL 2008 – user1222295 2012-02-21 16:09:42