PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara saya menanyakan panjang Django ArrayField?

extra() fungsi telah ditinggalkan menurut dokumen :

Inilah cara Anda dapat melakukan hal yang sama menggunakan Annotation khusus fungsi:

from django.db import models

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

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

Perhatikan bahwa cardinality() fungsi tersedia di PostgreSQL 9.4 atau lebih baru. Jika Anda menggunakan versi yang lebih lama, Anda harus menggunakan array_length() :

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

Satu peringatan dengan kueri kedua ini adalah bahwa array kosong akan diurutkan di depan semua yang tidak kosong. Ini dapat diselesaikan dengan menggabungkan NULL nilai dari array_length ke 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. PostgreSQL:Penalti kinerja untuk menggabungkan dua tabel dalam skema terpisah

  2. PostgreSQL SALIN CSV dengan dua string NULL

  3. postgresql kurang mendukung untuk kueri parameterizd

  4. Menuju cloud di CHAR(10)

  5. Bagaimana cara saya masuk dan mengautentikasi ke Postgresql setelah instalasi baru?