Maison > base de données > tutoriel mysql > Comment simuler la fonction FIELD() de MySQL dans PostgreSQL ?

Comment simuler la fonction FIELD() de MySQL dans PostgreSQL ?

Patricia Arquette
Libérer: 2024-12-08 01:38:11
original
310 Les gens l'ont consulté

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

Simuler MySQL FIELD() dans Postgresql

La conversion de MySQL vers PostgreSQL peut entraîner des défis imprévus. L'un de ces problèmes est la simulation de la fonctionnalité ORDER BY FIELD(), qui n'est pas directement prise en charge dans Postgresql.

Dans MySQL, la fonction FIELD() attribue des positions ordinales aux valeurs d'une liste spécifiée et trie les résultats en fonction de ces postes. Par exemple, la requête suivante dans MySQL :

SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
Copier après la connexion

trie la table devises_codes en fonction de l'ordre spécifié dans la liste FIELD(), puis par ordre alphabétique par nom.

Pour obtenir un comportement similaire dans Postgresql, vous pouvez utiliser une instruction CASE dans la clause ORDER BY :

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;
Copier après la connexion

Dans cette requête, l'instruction CASE attribue des valeurs de priorité (1-6) aux codes dans l’ordre spécifié. Les valeurs introuvables dans la liste reçoivent une priorité par défaut de 7. Les résultats sont ensuite triés par ordre décroissant de priorité et par ordre croissant de nom.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal