簡體   English   中英

如何在 IN 查詢中使用 PostgreSQL varchar 列值

[英]How to use PostgreSQL varchar column value in IN query

在 PostgreSQL 數據庫中,我們有一個帶有 varchar 值的列,其中的值存儲如下 [1,2,3,4,5] 我需要在帶有 In 子句的函數中檢查它。 例如,

--Some SQL Query with many joins
AND OtherTable.PhoneNumber NOT IN((myTable.PhoneNumberJson));

我嘗試使用 BLIMIT、RegExReplace 和類型轉換以各種方式傳遞值,但仍然收到錯誤。 如何將 varchar object["1,2,3,4,5"] 列表轉換為整數並在 IN 子句中使用它。

在 Postgres 中,您可以使用? 用於檢查 jsonb 數組是否包含給定值的運算符

AND myTable.PhoneNumberJson ? OtherTable.PhoneNumber

請注意,這要求PhoneNumberJsonjsonb數據類型。 如果它是json ,那么您可以先進行轉換:

AND myTable.PhoneNumberJson::jsonb ? OtherTable.PhoneNumber

如果有人正在尋找如何將 varchar 的對象轉換和檢查為雙精度,我在這里發布我預期的答案。

and not (myTable.Phone_Number = any  
(array(select 
regexp_split_to_table(replace(replace(other_Table.PhoneNumberJson,'[',''),']',''),','):: 
double precision)));

暫無
暫無

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

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