MySQL提供一個名爲FIELD()的字符串函數,它接受可變數量的參數。返回值是剩餘列表中第一個參數的位置。換句話說:什麼是類似於MySQL FIELD()函數的MS SQL Server功能?
FIELD('d', 'a', 'b', 'c', 'd', 'e', 'f')
會返回4,因爲'd'是第一個後面的第四個參數。
此函數提供了基於非常特定的排序對查詢結果進行排序的功能。對於我目前的應用程序,我需要管理四種狀態:活動,批准,拒絕和提交。但是,如果我只是通過狀態欄來訂購,我覺得結果列表的可用性會減少,因爲被拒絕和活躍的狀態項目比提交和批准的項目更重要。
在MySQL中我可以這樣做:
SELECT <stuff> FROM <table> WHERE <conditions> ORDER BY FIELD(status, 'rejected', 'active','submitted', 'approved')
,其結果將被排序,使得不合格的項目是第一,其次是活躍的,等等。因此,結果對訪問者的重要性下降。
我可以創建一個單獨的表,列出狀態的重要性級別,然後按降序排列查詢,但是自從切換到MS SQL Server後,這已經出現了幾次,所以我想我' d詢問我是否可以使用與MySQL的FIELD()類似的內置函數來避免額外的表和更復雜的查詢。
謝謝
戴維·基斯
真棒的東西!謝謝。 – 2010-10-08 19:20:25