2017-01-05 2 views
0

サポートと呼ばれる列を持つテーブルを持つSQLite DBがあります。SQLiteで文字列を含むエントリを選択するには

サポート列には値リスト(A,B,C,D)がありますが、このリストは配列ではなく文字列であり、要素には型がありません。

そのリスト内にAのエントリを選択したいと考えています。しかし、文字列であり配列ではないので、IN演算子を内部クエリで使用することはできませんでした。

私はSQLAlchemyを使用していますが、ドキュメントではSQLiteをバックエンドとして使用するとMATCHが機能しないと言われています。どうすればいいですか?

答えて

1

あなたの質問を理解したらA,B,C,Dのような文字列のサポートと呼ばれる列があり、サポートの要素の「リスト」にAが含まれているすべての行を選択したいとします。

私の最初の考えは、あなたのselectステートメントでワイルドカードを使うことができるということです。そうだろうSQLで:

SELECT * FROM my_table WHERE Support LIKE '%A%'; 

SQLAlchemyのでは、これはのようになります。

また
session.query(MyTable).filter(MyTable.Support.like('%A%')).all() 

、あなただけのすべてのデータをフェッチし、Pythonでメモリ内のリストをフィルタできます。しかし、一般的には、データベースレベルでフィルタリングを実行する方が良いと思います。

関連する問題