![](/img/trans.png)
[英]How to search a string in an array of strings using Apache Spark SQL query?
[英]How to search using a delimited string as array in query
我正在嘗試搜索與分隔字符串中的值匹配的記錄列。
我有兩張看起來像這樣的桌子
車輛
| Id | Make | Model |
|----|------|-------|
| 1 | Ford | Focus |
| 2 | Ford | GT |
| 3 | Ford | Kuga |
| 4 | Audi | R8 |
監視器
| Id | Makes | Models |
|----|-------|----------|
| 1 | Ford | GT,Focus |
| 2 | Audi | R8 |
我想要達到的目標如下:
| Id | Makes | Models | Matched_Count |
|----|-------|----------|---------------|
| 2 | Audi | R8 | 1 |
| 1 | Ford | GT,Focus | 2 |
使用以下查詢,我可以獲得單數字符串的匹配項,但我不確定如何拆分逗號以搜索單個模型。
select Id, Makes, Models, (select count(id) from Vehicles va where UPPER(sa.Makes) = UPPER(va.Make) AND UPPER(sa.Models) = UPPER(va.Model)) as Matched_Count
from Monitor sa
(我使用的是非常 SQL Server 2016 但是我無權創建自定義函數或變量)
如果你被這個數據 model 卡住了,你可以使用string_split()
:
select m.*, v.matched_count
from monitor m outer apply
(select count(*) as matched_count
from string_split(m.models, ',') s join
vehicles v
on s.value = v.model and m.makes = v.makes
) v;
不過,我建議您努力修復數據 model。
這是一個 db<>fiddle。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.