2017-02-15 3 views
0

私は必要な特定の列の値を含む文字列を受け取り、各値ごとに1つの行を挿入するストアドプロシージャを作成しようとしています"、"によって。例えば特定の列を含む文字列からSQL ServerでINSERTを実行する方法

:でながら

--The string I mentioned 
    @Objectid = '15, 21, 23, 53'. 
    --Then I wish to insert those values into a table like for instance 
    #Result(ID bigint, AppID bigint, ObjectID bigint) 

だから、私は、そのテーブルに挿入を行い、#Resultの異なる行に及び カラムのObjectIDの各@Objectidの 値を配置することを望みました同時に、他の列を の値で埋めると、同じストアドプロシージャの変数に格納されます。これを行う方法はありますか?もしそうなら、カーソルを使わずにこれを行う方法がありますか?

+2

(カンマでdelimetedときなど)の文字列を分割するには、SQLの方法がありますprocの –

+1

に渡す前に、コード内のテーブル値パラメーターとスプリットを使用するには、 - ([既存のQ&A]を見てくださいhttp://stackoverflow.com/search?q=%23sql-server+split+a+string)。しかし、事前にあなたのIDを分けることができれば、はるかに良いでしょう。 'CURSOR'は必要ありませんが、おそらく' INSERT'文を複数回実行するためには 'WHILE'ループを使う必要があります。あなたのソースシステムは何ですか(つまり、Idのリストはどのように取得しますか)。 – Serge

+1

どのバージョンのSQL Server? 2016年に使用できるSTRING_SPLIT関数があります – Kostis

答えて

0
DECLARE @Objectid varchar(max); 
set @Objectid = '15, 21, 23, 53'; 
set @Objectid = Replace(@Objectid, ',', '.'); 

SELECT ParseName(@Objectid, 4) As ID , 
     ParseName(@Objectid, 3) As AppID , 
     ParseName(@Objectid, 2) As ObjectID, 
     ParseName(@Objectid, 1) As ObjectID2 
+0

上記のようにクエリを使用してください。 –

+2

これはPARSENAME関数の悪用であり、4つ以上の要素にも拡張できないので、問題の一般的な解決法でもありません。 –

+0

これは私の問題を解決するものではなく、私が探していたものではありませんでしたが、まだ試みてくれてありがとうございます –

関連する問題