HQL子串最后x个字符

时间:2014-08-04 14:52:05

标签: java hibernate hql

我对Hibernate很新,我想得到一个字符串的最后N个字符。我发现了substring方法,但这并没有真正帮助:(

有没有人有任何想法?

TIA

4 个答案:

答案 0 :(得分:2)

我实际上是使用子字符串修复它。我忘了我可以使用参数。我做了类似的事情:

Query q = " .. where substring (field, :offset, :length) = something_else"
q.setParameter("offset", field.length() - N + 1);
q.setParameter("length", N);

答案 1 :(得分:0)

我很惊讶这没有帮助substring(int beginIndex,int endIndex)。但是如何拆分(String regex,int limit)。我认为需要更多关于你想要完成的事情的信息。

答案 2 :(得分:0)

我不久前就解决了这个问题,再次点击它,然后又回到了我几周前解决的问题。

假设您正在上传文件。该文件将类似于/tmp/user/1/image.jpgc:\temp\user\1\image.jpg 上传过程需要以为其生成图像存储的实际路径的方式编写,并且可以重新生成,因此假设我们的路径是

String actualPath='/tmp'
String user=user+"/"
Long id=1
 String getPath() {
  return "${actualPath}/${user}/${id}"
 }
String generatePath(actualPath,user,id) {
  return "${actualPath}/${user}/${id}"
 }

当尝试执行我们的HQL时,我们需要能够提取路径的实际部分,因此$pathgeneratePath(actualPath,user,id)应返回相同的内容,然后hql将类似于hql之外的内容:< / p>

 int filePosition = filePosition(actualPath,user,id)

在HQL中:

, substring(drd.image,${filePosition+1},LENGTH(drd.image)) as fileName) 

当前功能之外:

  //where filePosition returns size of generic string bound to string image...
 private int filePosition(String actualPath,user,id) {
            return (actualPath+user+id).size()
 }

如果image包含完整的图片路径,包括它的路径,我们上面的子字符串中fileName的输出将是超出实际路径的所有内容,即实际上传的fileName。

答案 3 :(得分:0)

您可以使用子字符串:

select substring(field, length(field) + 1 - N)

即使行的长度在行与行之间不同,此方法也可以使用