Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyertai Jadual dengan Lajur Dibataskan Koma?

Bagaimana untuk Menyertai Jadual dengan Lajur Dibataskan Koma?

Susan Sarandon
Lepaskan: 2025-01-03 05:04:40
asal
621 orang telah melayarinya

How to Join Tables with Comma-Delimited Columns?

Menyertai lajur data yang dipisahkan koma

Untuk menyertai dua jadual yang mengandungi lajur data yang dipisahkan koma, pertimbangkan pendekatan berikut:

Normalkan

Normalkan jadual yang mengandungi nilai dipisahkan koma dengan mencipta jadual berasingan dengan lajur untuk setiap nilai. Ini memudahkan pertanyaan dan mengelakkan manipulasi rentetan yang rumit.

Buat Fungsi Split

Buat fungsi pisah yang menukar rentetan yang dipisahkan koma kepada baris individu. Ini membolehkan anda melakukan cantuman pada baris.

Gunakan FOR XML PATH and STUFF

Guna FOR XML PATH untuk menggabungkan nilai menjadi rentetan yang dipisahkan koma dan STUFF untuk mengalih keluar koma di hadapan.

Memohon Secara Terus UNTUK XML PATH

Mohon UNTUK LALUAN XML terus ke data untuk menjana output yang diingini.

Contoh

Fungsi Pisah dengan Gabungan

;with cte as
(
  select c.col1, t1.col2
  from t1
  inner join 
  (
    select t2.col1, i.items col2
    from t2
    cross apply dbo.split(t2.col2, ',') i
  ) c
    on t1.col1 = c.col2
) 
select distinct c.col1, 
  STUFF(
         (SELECT distinct ', ' + c1.col2
          FROM cte c1
          where c.col1 = c1.col1
          FOR XML PATH ('')), 1, 1, '') col2
from cte c
Salin selepas log masuk

UNTUK LALUAN XML dan BAHAN

select col1, 
(
  select ', '+t1.col2
  from t1
  where ','+t2.col2+',' like '%,'+cast(t1.col1 as varchar(10))+',%'
  for xml path(''), type
).value('substring(text()[1], 3)', 'varchar(max)') as col2
from t2;
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Jadual dengan Lajur Dibataskan Koma?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan