簡體   English   中英

如何在查詢中使用分隔字符串作為數組進行搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM