質問

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 はあまり文書化されていませんが、ウェブ上の多数の例。ただし、結果を注文するために使用できるかどうかはわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top