sql >> データベース >  >> RDS >> PostgreSQL

Django ArrayFieldの長さをクエリするにはどうすればよいですか?

    extra() docs

    カスタムのアノテーションを使用して同じことを行う方法は次のとおりです。 機能:

    from django.db import models
    
    class ArrayLength(models.Func):
        function = 'CARDINALITY'
    
    MyModel.objects.all().annotate(field_len=ArrayLength('field')).order_by('field_len')
    

    cardinality() 関数はPostgreSQL9.4以降で使用できます。古いバージョンを使用している場合は、 array_length()

    MyModel.objects.all().annotate(field_len=Func(F('field'), 1, function='array_length')).order_by('field_len')
    

    この2番目のクエリの1つの注意点は、空の配列がすべての空でない配列の前にソートされることです。これは、 NULLを合体させることで解決できます。 array_lengthの値 0に。



    1. ダミーのチートシートのアクセス2021

    2. mysqliの複数のクエリ-変数を設定するとブールエラーが発生します/これをスキップする方法は?

    3. 平日ごとのMysqlグループ、欠落している平日を記入

    4. CentOS7またはRHEL7からMariaDBまたはMySQLを完全に削除します