Ekstrak lajur berbilang nilai dan gabungkannya menjadi rentetan yang dipisahkan koma dalam SQL Server 2005
Apabila mendapatkan semula berbilang nilai yang dikaitkan dengan satu entiti dalam pangkalan data hubungan, mungkin perlu untuk mencipta kaedah inovatif untuk menyepadukan nilai ini ke dalam perwakilan yang konsisten. Dalam kes ini, cabarannya ialah untuk mengekstrak semua alias yang dikaitkan dengan pengguna tertentu daripada jadual UserAliases dan memaparkannya dalam lajur sebagai rentetan dipisahkan koma tunggal.
Untuk melakukan ini, kami boleh memanfaatkan kuasa T-SQL untuk membina fungsi tersuai yang menggunakan COALESCE (fungsi serba boleh yang membolehkan kami memilih ungkapan bukan NULL pertama daripada senarai parameter yang ditentukan). Fungsi ini boleh digunakan untuk menggabungkan alias secara berulang (dipisahkan dengan koma) untuk mencipta rentetan untuk setiap pengguna.
Mari terokai cara melakukannya:
Kami mencipta fungsi yang dipanggil [dbo].[GetAliasesById] yang menerima ID pengguna (@userID) sebagai parameter input dan mengembalikan jenis data varchar(maks), yang membenarkan storan yang mencukupi untuk kapasiti alias gabungan.
Dalam badan fungsi, kami mengisytiharkan pembolehubah @output yang akan bertindak sebagai penumpuk rentetan dipisahkan koma.
Kami menggunakan pernyataan SELECT untuk mendapatkan alias yang dikaitkan dengan ID pengguna yang diberikan daripada jadual UserAliases.
Menggunakan gabungan COALESCE dan operator ' ', kami menyambungkan alias kepada pembolehubah @output, memastikan anda memasukkan pemisah koma antara setiap alias.
Akhir sekali, kami mengembalikan nilai kumulatif @output sebagai hasil daripada fungsi.
Untuk memasukkan fungsi ini ke dalam pertanyaan, kita boleh menggunakan gabungan SELECT dan GROUP BY. Pernyataan SELECT mendapatkan semula UserID dan keputusan memanggil fungsi tersuai dbo.GetAliasesByID(UserID) (menggunakan setiap UserID unik). Klausa GROUP BY memastikan bahawa keputusan dikumpulkan mengikut ID Pengguna, membenarkan alias digabungkan untuk setiap pengguna.
Dengan melaksanakan pertanyaan ini, anda akan mendapat output yang diingini menunjukkan semua alias untuk setiap pengguna dalam satu lajur yang dipisahkan dengan koma:
UserID | Aliases |
---|---|
1 | MrX, MrY, MrA |
2 | Abc, Xyz |
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Berbilang Nilai daripada Lajur Tunggal dalam SQL Server 2005 dan Menggabungkannya menjadi Rentetan Dipisahkan Koma?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!