PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да направя запитване за дължината на Django ArrayField?

extra() функцията е отхвърлена съгласно документи :

Ето как можете да направите същото, като използвате персонализирана Анотация функция:

from django.db import models

class ArrayLength(models.Func):
    function = 'CARDINALITY'

MyModel.objects.all().annotate(field_len=ArrayLength('field')).order_by('field_len')

Имайте предвид, че cardinality() функцията е налична в PostgreSQL 9.4 или по-нова версия. Ако използвате по-стара версия, трябва да използвате array_length() :

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

Едно предупреждение с тази втора заявка е, че празен масив ще бъде сортиран пред всички непразни. Това може да се реши чрез обединяване на NULL стойности от array_length до 0.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Concat редове в Postgres

  2. Как да избягам от единични кавички в заявка на командния ред на psql?

  3. Как работи COPY и защо е толкова по-бързо от INSERT?

  4. Кой има документи за фоновите процеси на PostgreSQL?

  5. INSERT COMMAND ::ГРЕШКА:стойността на колоната не съществува