簡體   English   中英

Sqlalchemy 使用 LIKE 查詢數組列

[英]Sqlalchemy query to array column using LIKE

我有列 file_names 的表文件,它是 ARRAY 類型。 W 想使用通配符構建查詢搜索記錄,其中任何數組元素都類似於“abc*”。

我試過:

File.names.any("abc%", operator= operators.like_op).all()

但它不起作用。 它返回sql:

SELECT file.id, file.names FROM file WHERE 'abc%' LIKE ANY(file.names)

但它返回空結果。 您有什么建議,如何構建這樣的查詢?

like運算符適用於文本,而不是數組,因此在應用like運算符之前,您需要找到一種將數組轉換為文本的方法。 要在 sql 中執行此操作,您可以使用array_to_string()函數,請參閱手冊

我在 SQL 中找到了解決方案:

SELECT file.id, file.names FROM file WHERE EXISTS (SELECT 1 FROM unnest(file.names) AS n
WHERE n LIKE 'abc%')

它有效。 但我不知道如何在 sqlalchemy 中提出這樣的查詢。 有任何想法嗎?

暫無
暫無

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

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