我有一个 Hibernate 查询,它有一个要查找的前缀,如下所示:
SELECT ... WHERE PRODUCT_ID LIKE ?
PRODUCT_ID
的格式如下:
ABC123 Brown Desk
ABC1 Desk Set
DE84 Bar Stool
83UIK Spoon
目前,准备好的语句值如下所示(假设 productId
作为参数传入):
productId%
这意味着对于查询的 ID ABC1
,它将返回上述列表中的两个结果:
ABC123 Brown Desk
ABC1 Desk Set
我的问题:如何在查找中包含空格,以便查询针对特定产品,而不仅仅是前缀?
我尝试过:
'productId %'
但它根本不返回任何结果。我如何告诉 Hibernate 我想要查找 productId[SINGLE SPACE]%
?
最佳答案
尝试使用CONCAT
而不是'productId %'
或'? %'
:
SELECT ... WHERE PRODUCT_ID LIKE CONCAT(?, ' %')
//------------------------------------------^^
或者您可以在将 productId
发送到查询之前将其与末尾的空格连接起来:
Query query = session.createQuery("SELECT ... WHERE PRODUCT_ID LIKE ?");
query.setParameter(1, productId + " %");
//---------------------------------^^
关于java - Hibernate 查询 LIKE 子句,但用空格分隔查找前缀和通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714343/