0

私は C# (Windows フォーム) と SQL-Server でプログラムを実行しており、2 つの列から文字列を取得して配列に入れる必要があります。いくつかのテキスト ボックスにオートコンプリートを実装するために、後でその配列を使用します。ルールは次のとおりです。

  • 配列は、列にある文字列の量を保持できる必要があります。この量は 500 文字列を超える可能性があり、可変です。
  • 列からの個別の値が必要です。重複はありません。

2つの列のすべての文字列をまとめるには「UNION」を使用し、文字列を配列に入れるときは「while」サイクルでSqlDataReaderを使用することになっていると思います。

これがテーブルの例です。それを使用して説明してください。

----------------------------
|    name    |   surname   |
----------------------------
|    John    |   Jackson   |
----------------------------
|   Michael  |    Jones    |
----------------------------
|   Amanda   |    Lopez    |
----------------------------
|  Christina |    Lopez    |
----------------------------

では、クエリはどのように表示され、結果を配列に入れるにはどうすればよいでしょうか?

4

1 に答える 1

1

連結が必要な場合は、これを使用します。

SELECT DISTINCT name + surname FROM MyTable

連結したくない場合は、これを行うことができます:

   SELECT Col1 FROM MyTable
    UNION
    SELECT Col2 FROM MyTable

共用体は、データ型が同じCol1である限り機能します。Col2データを取得したら、(sproc を介して) クライアント側にデータセット、データテーブル、または sqldatareader に戻すことができます。

残りは単純で、データを取得して何らかの配列に保存する必要があります。ある種のループを介して

reader = GetData();
while(reader.read())
 {
  //store into an array...
 }

これをSQL Server Management Studioにコピーして貼り付けます

CREATE TABLE #Test
(
 col1 varchar(10),
 col2 varchar(10)
)

INSERT INTO #Test(col1, col2) VALUES('jon', 'jane')
INSERT INTO #Test(col1, col2) VALUES('jane', 'jane')
INSERT INTO #Test(col1, col2) VALUES('bob', 'phil')
INSERT INTO #Test(col1, col2) VALUES('marc', 'phil')
INSERT INTO #Test(col1, col2) VALUES('jon', 'jon')
INSERT INTO #Test(col1, col2) VALUES('jon', 'Jon')
INSERT INTO #Test(col1, col2) VALUES('jane1', 'jane')
INSERT INTO #Test(col1, col2) VALUES('bob2', 'phil')
INSERT INTO #Test(col1, col2) VALUES('marc2', 'phil')
INSERT INTO #Test(col1, col2) VALUES('ste', 'jane')

SELECT col1 FROM #test UNION SELECT col2 FROM #test

DROP TABLE #Test

結果は次のとおりです。

bob
bob2
jane
jane1
jon
marc
marc2
phil
ste
于 2012-04-13T18:22:58.843 に答える