Sql HQL';parsename';相等的
我发现PARSENAME函数是一个很好的选择,可以对存储在数据库中的IP地址进行排序。有一个例子。Sql HQL';parsename';相等的,sql,nhibernate,hql,Sql,Nhibernate,Hql,我发现PARSENAME函数是一个很好的选择,可以对存储在数据库中的IP地址进行排序。有一个例子。 我的问题是我在xml映射文件中使用Hibernate和命名查询,并且我试图避免使用 session.createSQLQuery(..) 功能。 我想知道是否存在用于HQL查询的PARSENAME等效函数。我正在搜索它,但什么也找不到。 非常感谢。我没有找到任何相关信息。 最后,我执行以下ORDERBY子句以数字方式对IP地址进行排序(我找到了解决方案): 子类化您的方言,并使用Registe
我的问题是我在xml映射文件中使用Hibernate和命名查询,并且我试图避免使用
session.createSQLQuery(..)
功能。我想知道是否存在用于HQL查询的PARSENAME等效函数。我正在搜索它,但什么也找不到。
非常感谢。我没有找到任何相关信息。
最后,我执行以下ORDERBY子句以数字方式对IP地址进行排序(我找到了解决方案):
子类化您的方言,并使用
RegisterFunction()
使PARSENAME可用于HQL查询RegisterFunction
没有很好的文档记录,但有很多。我不确定你能不能用它来排序结果
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)