Bạn nên tìm một cách tốt hơn để trình bày những gì bạn muốn, nhưng tôi nghĩ rằng những điều sau đây đã kết thúc:
select concat_wc(',', substring_index(substring_index(entry_value, '"', 2), '"' -1),
substring_index(substring_index(entry_value, '"', 4), '"' -1),
. . .
)
Bạn có thể phải đặt điều kiện dừng dựa trên số lượng giá trị trong số giá trị trong chuỗi, dẫn đến kết quả như:
select concat_ws(',',
case when num_entry_values >= 1 then substring_index(substring_index(entry_value, '"', 2), '"' -1) end,
case when num_entry_values >= 2 then substring_index(substring_index(entry_value, '"', 4), '"' -1) end,
. . .
)
Nếu bạn không có con số này, bạn có thể tính nó bằng cách đếm số lượng dấu ngoặc kép trong chuỗi.
CHỈNH SỬA:
Để đếm số lượng mục nhập, hãy đếm "
:
from (select aev.*,
(length(entry_value) = length(replace(entry_value, '"', '')) ) / 2 as num_entry_values
from ch_arf_entry_values aev
) aev