2014-01-29 2 views
1

postgres 테이블에 version (varchar 유형)이라는 열이있는 일부 데이터가 있습니다. 해당 열을 정렬/정렬하는 데 내 자신의 비교 함수를 사용하고 싶습니다만, 가장 적합한 대답은 무엇인지 잘 모르겠습니다.postgresql에서 사용자 정의 비교 구현하기

  • JS 스타일 구현 comp (왼쪽, 오른쪽) -> -1/0/1,하지만 난 (SQL Server에서) (plv8을 통해) 조항에 의해 SQL 순서대로 사용할 수 있습니다 모르겠다
  • 나는 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

관련 문제