配列のデータをテーブルに作る場合は
どうすればよいでしょうか?
「sql server 配列」でいろいろ検索してみたのですがよく分かりませんでした。
解決した場合は500ポイント差し上げますので分かりやすい解説をお願いいたします。
PostgreSQL などでは データ型として配列をサポートしていますが、SQLServer はそういった型は無いので、処理により複数のデータを扱うよう対応する必要があります。
配列を個々のテーブルデータとして管理する方法もありますが、操作が面倒になるので今回はC#側でデータを処理する案を提示いたします。
まず配列データを格納するときに
string arrayData = {"apple", "orange", "banana"}; string joinedData = string.Join(",", arrayData ); MessageBox.Show( joinedData );
のように結合し、一つの文字列としてデータを格納します。
逆にデータベースから取り出した後では、
string[] arrayData = joinedData.Split(","); foreach (string stData in arrayData ) { MessageBox.Show(stData); }
のように分割して配列として扱います。
データ中に","がある場合はデリミタ(区切り文字)を別のものに変えればよいでしょう。
扱いたいデータが数値である場合は文字列に変換するか、今回は説明を見送りましたが別テーブルで管理するような対応が必要になると思います。
http://www.atmarkit.co.jp/fnetwork/tokusyuu/01sql99/sql99_2a.htm...
SQL99では配列型というのがあって、DBMSによっては実装されています。
お使いのSQL serverのデータ型にこういうものがなければ、文字列型にして格納・取出しする方が手っ取り早いと思います。
「SQL server 2000」と「SQL server 2005」を見てみたのですが、配列のデータ型は無いようです。
やはり文字列型を作って自分で分割・格納するしかないんですね。
PostgreSQL などでは データ型として配列をサポートしていますが、SQLServer はそういった型は無いので、処理により複数のデータを扱うよう対応する必要があります。
配列を個々のテーブルデータとして管理する方法もありますが、操作が面倒になるので今回はC#側でデータを処理する案を提示いたします。
まず配列データを格納するときに
string arrayData = {"apple", "orange", "banana"}; string joinedData = string.Join(",", arrayData ); MessageBox.Show( joinedData );
のように結合し、一つの文字列としてデータを格納します。
逆にデータベースから取り出した後では、
string[] arrayData = joinedData.Split(","); foreach (string stData in arrayData ) { MessageBox.Show(stData); }
のように分割して配列として扱います。
データ中に","がある場合はデリミタ(区切り文字)を別のものに変えればよいでしょう。
扱いたいデータが数値である場合は文字列に変換するか、今回は説明を見送りましたが別テーブルで管理するような対応が必要になると思います。
よく分かりました。ありがとうございます。
検索してみると、MySQLやPostgreSQLでは配列型があるようなので、SQL server にも有るのかと思ってこの質問をしてみました。
自分で分割・格納する処理を作って対応しようと思います。
よく分かりました。ありがとうございます。
検索してみると、MySQLやPostgreSQLでは配列型があるようなので、SQL server にも有るのかと思ってこの質問をしてみました。
自分で分割・格納する処理を作って対応しようと思います。