我有以下hql查询,
from Channe where ip='1.11.6.0';
但在数据库中,IP保存为1.11.6.0:8080
。
所以我需要以一种方式修改查询,用分隔符':'拆分ip并获取firstcome值。我不希望使用值1.11.6.0:8080
修改搜索。
答案 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
这可以解决您的问题