私はスプールというテーブルを持っていて、 "NAME"という名前のフィールドがあります。このフィールドには、7つの値がダッシュで区切られた文字列があります。別のフィールドに基づいてテーブルのフィールドを塗りつぶすスクリプト
"NAME"という文字列をダッシュで分割し、7つの異なる列にある7つの値をすべて記録するスクリプトをSQL Serverで実行する必要があります。例えば
NAME:column1ので ABCD-0123-ASDはcolumn2の中で、ABCD記録しなければならない:0123とCOLUMN3 ASD ...など私は私が説明した期待し =)
感謝を!
私は実際の問題で私の文字列「名前」に7つのセグメントがあり、そのフィールドのすべてのセグメントを7つの列に入れなければなりません。
が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
どうやらそれが正常に動作します:あなたは
HIジョン・デューイを助けるためにも
私は)=ウィッヒそのスクリプトを適用 おかげで、テーブル内のレコードの数nを持っている私は、この作りますしかし、同じテーブル内で更新を行いたい場合、関数を呼び出す方法、またはストアプロシージャでなければならない場合はどうすればよいですか? ご協力いただきありがとうございます!
また、あなたが使用しているSQL Serverのバージョンを指定してください。 –
私はSQL 2008を使用しています – user1222295