字符串拆分函数与hql

时间:2014-09-16 12:56:12

标签: java hibernate hql

我有以下hql查询,

from Channe where ip='1.11.6.0';

但在数据库中,IP保存为1.11.6.0:8080

所以我需要以一种方式修改查询,用分隔符':'拆分ip并获取firstcome值。我不希望使用值1.11.6.0:8080修改搜索。

3 个答案:

答案 0 :(得分:2)

在Hibernate文档中查看此页面。在下面的页面上有一个名为 14.10的部分。表达式

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html

它说,除其他外:

  

string concatenation ... || ...或concat(...,...)current_date(),

     

...

     

EJB-QL 3.0定义的任何函数或运算符:substring(),trim(),lower(),upper(),   length(),locate(),abs(),sqrt(),bit_length(),mod()

但实际上你做得更好,因为@Hansraj在评论中建议并在你的搜索字词中附加一个通配符

String query = "from Channe where ip like :term";

entityManager.createQuery(query).setParameter("term",ipString + "%");

这假设您的数据类型当然是字符串。

答案 1 :(得分:0)

试试这个:

SPLIT(".", FIELDNAME)

答案 2 :(得分:0)

尝试以下方法:

假设变量ip具有地址

ip = "10.131.56.40:8080";
var ipSplit = ip.Split(':');
var ipStart = ipSplit[0];

ipStart将仅存储10.131.56.40

这可以解决您的问题