我有一个名为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