ホームページ > データベース > mysql チュートリアル > PostgreSQL で MySQL の FIELD() 関数をシミュレートするにはどうすればよいですか?

PostgreSQL で MySQL の FIELD() 関数をシミュレートするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-08 01:38:11
オリジナル
297 人が閲覧しました

How to Simulate MySQL's FIELD() Function in PostgreSQL?

Postgresql での MySQL FIELD() のシミュレーション

MySQL から PostgreSQL への変換では、予期せぬ課題が発生する可能性があります。このような問題の 1 つは、Postgresql では直接サポートされていない ORDER BY FIELD() 機能のシミュレーションです。

MySQL では、FIELD() 関数は、指定されたリスト内の値に序数の位置を割り当て、次の基準に基づいて結果を並べ替えます。これらの立場。たとえば、MySQL の次のクエリ:

SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
ログイン後にコピー

は、FIELD() リストで指定された順序に基づいて、名前のアルファベット順に、currency_codes テーブルを並べ替えます。

で同様の動作を実現するには、 Postgresql では、ORDER BY 内で CASE ステートメントを使用できます。句:

SELECT * FROM currency_codes
  ORDER BY
  CASE
    WHEN code='USD' THEN 1
    WHEN code='CAD' THEN 2
    WHEN code='AUD' THEN 3
    WHEN code='BBD' THEN 4
    WHEN code='EUR' THEN 5
    WHEN code='GBP' THEN 6
    ELSE 7
  END,name;
ログイン後にコピー

このクエリでは、CASE ステートメントは、指定された順序でコードに優先順位の値 (1 ~ 6) を割り当てます。リスト内に見つからない値には、デフォルトの優先順位 7 が割り当てられます。結果は、優先順位の降順と名前の昇順で並べ替えられます。

以上がPostgreSQL で MySQL の FIELD() 関数をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート