gpt4 book ai didi

java - SQL最长前缀字符串

转载 作者:行者123 更新时间:2023-11-29 09:03:24 24 4
gpt4 key购买 nike

我有一个循环,通过 DAO 执行查询 N 次。就我而言,我有一个对象,其属性值为“123456789”。在第一轮中,它对特定表执行查询以获取列 C1 等于“123456789”的所有记录。

在第二轮中,它在同一个表上执行查询以获取列 C1 等于“12345678”的所有记录。依此类推,直到找到具有最长前缀的记录。

我认为与其多次执行此查询,为什么不只执行另一个查询一次,该查询将字符串“123456789”作为参数并返回具有列 C1 的记录最长的前缀“123456789”。但我不知道如何使用 Hibernate 来做到这一点(如果可能的话),或者您是否有其他解决方案。我正在使用 MySQL。

(我已经看过这个 post,但我想知道是否有办法使用 Hibernate 来做到这一点。)

最佳答案

你可以执行这样的sql:

select * from table where 1234567 like concat(c1,'%') order by c1 desc limit 1;

基本上,您将采用从 SQL 返回的与给定参数匹配的最长值。如果您愿意,可以使用 setMaxResults 代替限制和运算符 ||连接列,例如:

...
Query query = session.createQuery("from Prefixes where :parameter like Prefixes.prefix || '%' order by Prefixes.prefix desc");
query.setParameter("parameter", 1234567);
query.setMaxResults(1);
Prefixes p = (Prefixes)query.uniqueResult();
...

关于java - SQL最长前缀字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7866890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com