Pregunta

He descubierto la función PARSENAME como una buena opción para ordenar la dirección IP almacenada en la base de datos. Aquí hay un ejemplo.
Mi problema es que estoy usando Hibernate con consultas con nombre en un archivo de mapeo xml y estoy tratando de evitar el uso de

session.createSQLQuery(..) 

función.
Me pregunto si existe alguna función equivalente de PARSENAME para consultas HQL. Lo estoy buscando y no puedo encontrar nada.
Muchas gracias.

¿Fue útil?

Solución

No encontré nada relacionado.
Finalmente ejecuté la siguiente cláusula ORDER BY para ordenar las direcciones IP de forma numérica (encontré la solución aquí ):

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)    

Otros consejos

Subclasifique su dialecto y use RegisterFunction () para que PARSENAME esté disponible para consultas HQL. RegisterFunction no está muy bien documentado, pero hay muchos ejemplos en la web . Sin embargo, no estoy seguro de que pueda usarlo para ordenar los resultados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top