質問
PARSENAME関数は、データベースに保存されているIPアドレスを注文するのに適した選択肢であることを発見しました。 ここに例があります。
私の問題は、xmlマッピングファイルの名前付きクエリでHibernateを使用しており、使用を避けようとしていることです
session.createSQLQuery(..)
関数。
HQLクエリに同等のPARSENAME関数が存在するかどうか疑問に思っています。検索していますが、何も見つかりません。
どうもありがとう。
解決
関連するものは見つかりませんでした。
最後に、次のORDER BY句を実行して、IPアドレスを数値で順序付けしました(ソリューションこちら):
order by cast(substring(host.ip, 1, locate('.', host.ip) - 1) as integer),
cast(substring(host.ip, locate('.', host.ip) + 1, locate('.', host.ip, locate('.', host.ip) + 1) - locate('.', host.ip) - 1) as integer),
cast(substring(host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1, locate('.', host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1) - locate('.', host.ip, locate('.', host.ip) + 1) - 1) as integer),
cast(substring(host.ip, locate('.', host.ip, locate('.', host.ip, locate('.', host.ip) + 1) + 1) + 1, 3) as integer)
他のヒント
方言をサブクラス化し、 RegisterFunction()
を使用して、PARSENAMEをHQLクエリで使用できるようにします。 RegisterFunction
はあまり文書化されていませんが、ウェブ上の多数の例。ただし、結果を注文するために使用できるかどうかはわかりません。
所属していません StackOverflow