ホームページ  >  記事  >  データベース  >  Django ORM クエリで CharField を整数に変換するにはどうすればよいですか?

Django ORM クエリで CharField を整数に変換するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 12:34:301004ブラウズ

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

Django ORM クエリでの Char の整数へのキャスト

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 クエリのキャスト機能がないため、不一致が発生します。

キャスト関数の使用:

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>

Raw Query:

代わりに、Raw クエリを利用してキャストを実行できます:

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。