[英]How can I check whether the input string partailly matches any word in the given array in php?
[英]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.