如何在 Django ORM 查詢中將 CharField 轉換為整數?

Barbara Streisand
發布: 2024-11-03 12:34:30
原創
1048 人瀏覽過

How to Convert a CharField to an Integer in Django ORM Queries?

在 Django ORM 查詢中將 Char 轉換為 Integer

在 Django ORM 中,您可能會遇到需要將 CharField 轉換為整數以進行查詢的場景。讓我們探索可用的選項:

原始查詢:

<code class="mysql">select student_id from students where student_id like "%97318%" order by CAST(student_id as UNSIGNED) desc;</code>
登入後複製

標準查詢:

<code class="python">students.objects.filter(student_id__contains="97318").order_by('-student_id')</code>
登入後複製

此查詢缺少MySQL 查詢的轉換功能,導致不符。

使用 Cast 函數:

從 Django 1.10 開始,Cast 函數可以將欄位轉換為各種資料型別。在這種情況下,您可以使用:

<code class="python">from django.db.models import FloatField
from django.db.models.functions import Cast

students.objects.annotate(student_id_int=Cast('student_id', FloatField()))\
    .filter(student_id__contains="97318").order_by('-student_id_int')</code>
登入後複製

原始查詢:

作為替代方案,您可以使用原始查詢來實現轉換:

<code class="python">from django.db import connection

cursor = connection.cursor()
cursor.execute("""
    SELECT student_id
    FROM students
    WHERE student_id LIKE '%%97318%%'
    ORDER BY CAST(student_id AS UNSIGNED) DESC
""")
student_ids = cursor.fetchall()</code>
登入後複製

以上是如何在 Django ORM 查詢中將 CharField 轉換為整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板