我有一個名為 "動物 "的表和另一個包含動物映射術語的表。
動物映射表
而且我需要輸出表正確地標注每一種動物,如果沒有匹配,那么它將回傳一個NULL。
輸出表
我正在考慮用regexp_contains的outer join(也嘗試用join),但它不會列印出任何結果。任何幫助都是好的。謝謝你
。select * from `animals` a
join `animals_label` m
on regexp_contains(lower(concat('[^a-zA-Z]', a.an animals, '[^a-zA-Z]') , lower( concat(
'[^a-zA-Z]', m.label, '[^a-zA-Z]' ))
uj5u.com熱心網友回復:
請考慮以下方法
select a.*, animal as extracted_animal, label
from animals a,
(select string_agg(animal, '|'/span>) all_animals from animals_label)
left join unnest(regexp_extract_all(animal, r' (? i)' || all_animals)) animal
left join animals_label
using(animal)
如果應用于你問題中的樣本資料 - 輸出是
uj5u.com熱心網友回復:
你可以split()字串和join:
select distinct animal, am.label
from animal a cross join
unnest(split(a.animal, ' ')) 動物 left join
動物圖譜am
on am.animal = animal。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/320177.html
標籤:
上一篇:試圖使用join、count和groupby,但沒有達到我想要的效果
下一篇:連接和/或子查詢或排名函式



