簡體   English   中英

如何檢查數據庫數組是否與給定數組的任何值匹配

[英]How to check if a DB array matches any values of a given array

我有點卡住了。

我有一個包含天氣代碼(如雨、雪等)的 SQL 列。它以逗號分隔,因此該列的值類似於

雨、雪、霧

現在,我想從數組中選擇包含值的行。

我有一個類似於這樣的 SQL 代碼:

SELECT * FROM locations WHERE currentWeather IN ('rain', 'snow', 'cloudy') ORDER BY name ASC

問題在於,當 currentWeather 列僅包含一項時,這顯然有效。 有沒有辦法做到這一點,如果列值包含給定數組中的任何項目,它就會選擇它?

另外,如果兩個項目匹配,它會選擇它兩次嗎?

最好的祝願

在子選擇中使用 unnest。

Select distinct A.myArray from (select unnest(column) as myArray from table) A where A.myArray in (your words to filter for)

請注意,在 sql 中使用數組不是很理想,並且不遵循規范化規則。 理想情況下,您的表不應該包含數組,而應該只包含幾行,每行包含您想要的特定值。 它可以防止諸如此類的問題。

為避免選擇重復值,請在編寫 select 后立即使用 Distinct 關鍵字。

參考:

https://www.w3resource.com/PostgreSQL/postgresql_unnest-function.php

WHERE FIND_IN_SET(currentWeather, "rain,snow,cloudy")

在逗號(僅)處挑選字符串以查看currentWeather是否是這 3 個“單詞”中的任何一個。

另見FIELD(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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