首頁 > 資料庫 > 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 可能會帶來不可預見的挑戰。其中一個問題是模擬 ORDER BY FIELD() 功能,Postgresql 中不直接支援該功能。

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

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