2014-01-29 64 views
1

我在postgres表中有一些數據,其中一列稱爲版本(類型爲varchar)。我想用我自己的比較函數來命令/排序該列,但我不知道什麼是最合適的答案:在postgresql中實現自定義比較

  • 我有一個JS實現風格樣稿(左,右) - > -1/0/1,但我不知道我怎麼可以在一個SQL順序子句中使用它(通過PLV8)
  • 我可以寫一個C擴展名,但我並不特別興奮由於維護的原因,因爲在C中編寫比較本身不會太難)
  • 其他?

我感興趣的比較類型與包管理器中使用的版本字符串排序類似。

+0

自定義運算符如何? http://www.postgresql.org/docs/current/static/sql-createoperator.html – bma

+0

我看着那個鏈接,但無法弄清楚我是否需​​要我自己的類型來附加自定義運算符,或者我是否可以'覆蓋'它在每列的基礎上? –

回答

1

你想:

ORDER BY mycolumn USING operator 

the docs for SELECT。看起來您可能需要爲該函數定義一個運算符,並且需要一個包含運算符的b-樹運算符類才能使用它;你不能只寫USING myfunc()

(沒時間測試這個,現在寫一個演示)。

+0

這是正確的,操作符可以使用任何定義的函數來實現,包括plpgsql。這裏的另一個答案更詳細:http://stackoverflow.com/questions/7205878/order-by-using-clause-in-postgresql – EricS