0

CSV値を次のように文字列に保存しています。

    StringBuilder CSValue = new StringBuilder();
    for (int i = 0; i < obj._contactNumbers.Count; i++)
    {
        CSValue.Append(obj._contactNumbers[i]);
        if (i != obj._contactNumbers.Count - 1)
        {
            CSValue.Append(",");
        }
    }

これをストアドプロシージャ(CSValue.ToString()として)に渡したので、各値を選択してセルに格納する必要があります。これらの値をどのように分離する必要がありますか?

私を助けてください!

4

3 に答える 3

2

CSVではなくSQLServer2008を使用しているので、実際には次のようにXMLドキュメントにプッシュします。

<Values>
    <Value value="1" />
    <Value value="2" />
    <Value value="3" />
</Values>

次に、ストアドプロシージャで、次のSQLを使用して各値を個別の行として取得します。

SELECT value.value('(@value)[1]', 'INT') as 'id' 
FROM @idList.nodes('/Values/Value') as T(value)

この結果は、通常のSQLクエリ結合を使用して他のテーブルと結合し、目的の動作を得ることができます。

于 2012-10-15T16:47:03.137 に答える
2

分割関数を定義しました。

これに関しては、いくつかの完全なスタックオーバーフロースレッドがあります。たとえば、T-SQLで同等の分割関数ですか?

于 2012-10-15T16:48:34.673 に答える
1

あなたはこれを試すことができます

declare @Temp nvarchar(max), @c int, @a nvarchar(max)

declare @Temp_Table table (value nvarchar(max))

select @Temp = 'a,b,c,g,a'

select @c = CHARINDEX(',', @Temp)
while @c > 0
begin
    insert into @Temp_Table
    select LEFT(@Temp, @c - 1)

    select @Temp = right(@Temp, LEN(@Temp) - @c)
    select @c = CHARINDEX(',', @Temp)
end

select * from @Temp_Table

または、頻繁に行う必要がある場合は、テーブル関数を作成してこれを行うことができます

于 2012-10-15T16:45:39.800 に答える