首頁  >  文章  >  資料庫  >  如何在 Django ORM 查詢中將 CharField 轉換為整數?

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

Barbara Streisand
Barbara Streisand原創
2024-11-03 12:34:301003瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn