2012-01-06 51 views
2

我正在使用VS2005 C#和SQL2005。從多個列中檢索數據並在單個列中顯示

我想從多列中檢索數據併合並它們,用逗號分隔它們。

E.g.在我的SQL表數據的UserData

No. | Username | Role 1 | Role 2 | Role 3 |

1 | Jimmy | USER | READONLY | WRITE |

數據,我想在我的GridView GridView1顯示:

No. | Username | Roles |

1 | Jimmy | USER, READONLY, WRITE |

如何使用SELECT語句來合併3列中的數據併合並它們,用逗號分隔數據並在GridView中列出它們?

謝謝


編輯

我已經使用鯊魚和門提供的方法試過,但我想刪除逗號,如果在角色列中的數據是空的。現在

的情況是,Roles列將這個樣子,如果角色2和角色3是空的: USER,,

我可以知道我怎麼能集團,到變量以及因此它不會如果該值顯示是空的?

+1

您可能需要檢查空值,因爲連接具有空值的列會導致空值。請改用此SQL查詢:select username,IsNull([role 1],'')+','+ IsNull([role 2],'')+','+ IsNull([role 3],')as UserData的角色 – Mun 2012-01-06 03:03:39

+1

@RUiHAO看看我編輯過的帖子。它使用'ISNULL()'來獲得你想要的結果。 – 2012-01-06 03:43:40

+1

@那個查詢會把逗號或雙逗號用不同的NULL值加上。看看我的答案。在'ISNULL()'函數中組合列和逗號字符,這應該是OP正在尋找的東西。 – 2012-01-06 03:44:35

回答

1

下面是SQL查詢:

select 
    username, 
    isnull(nullif([role 1], '') + ', ', '') + 
    isnull(nullif([role 2], '') + ', ', '') + 
    isnull(nullif([role 3], ''), '') as Roles 
from UserData 

然後爲網格視圖代碼:

SqlConnection conn = new SqlConnection(YourConnectionStringHere); 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = conn; 
cmd.CommandText = 
    "select " + 
    " username, " + 
    " isnull(nullif([role 1], '') + ', ', '') + " + 
    " isnull(nullif([role 2], '') + ', ', '') + " + 
    " isnull(nullif([role 3], ''), '') as Roles " + 
    "from UserData"; 

SqlDataAdapter sda = new SqlDataAdapter(cmd); 
Datatable YourData = new DataTable(); 

try 
{ 
    sda.Fill(YourData); 

    GridView1.DataSource = YourData; 
    GridView1.Bind(); 
} 
catch 
{ 
    sda.Dispose(); 
    // handle your error 
} 
+0

嗨,我已經實施了該方法。但是,如果值爲空,是否有刪除','的方法?當角色1,2或3爲空時,我顯示數據時遇到一些麻煩,'''也會顯示出來 – gymcode 2012-01-06 03:45:34

+0

@RUiHAO這正是查詢所要做的。它檢查'[role x] +',''的組合。如果這是'NULL'(如果'[role x]'是NULL),那麼它將不會顯示不必要的逗號。 – 2012-01-06 03:47:38

+0

@RUiHAO當你說「空」時,你是什麼意思? NULL或空字符串('''')?這是兩個完全不同的東西。上面的解決方案是爲NULL值,而不是空字符串('''')。 – 2012-01-06 03:49:08

2

你應該這樣做在存儲過程,然後綁定的GridView到存儲過程:

SELECT No., Username, CAST(Role1 AS varchar(1024)+ ', ' + Role2 + ', ' + Role3) 
相關問題