Hibernate 查询 LIKE 子句,但使用 space 分隔查找前缀和通配符
Hibernate query LIKE clause, but with space separating lookup prefix and wildcard
我有一个 Hibernate 查询,它有一个要查找的前缀,看起来像:
SELECT ... WHERE PRODUCT_ID LIKE ?
PRODUCT_ID
的格式类似于:
ABC123 Brown Desk
ABC1 Desk Set
DE84 Bar Stool
83UIK Spoon
目前,准备好的语句值看起来像(假设 productId
作为参数传入):
productId%
这意味着对于查询的 ID ABC1
,它将 return 两个 来自上面列表的结果:
ABC123 Brown Desk
ABC1 Desk Set
我的问题: 如何在查找中包含 space 以便查询针对 特定的 产品, 而不仅仅是前缀?
我试过了:
'productId %'
但它 return 根本没有任何结果。我如何告诉 Hibernate 我想查找 productId[SINGLE SPACE]%
?
尝试使用 CONCAT
而不是 'productId %'
或 '? %'
:
SELECT ... WHERE PRODUCT_ID LIKE CONCAT(?, ' %')
//------------------------------------------^^
或者您可以在最后将 productId
与 space 连接起来,然后再将其发送到查询:
Query query = session.createQuery("SELECT ... WHERE PRODUCT_ID LIKE ?");
query.setParameter(1, productId + " %");
//---------------------------------^^
我有一个 Hibernate 查询,它有一个要查找的前缀,看起来像:
SELECT ... WHERE PRODUCT_ID LIKE ?
PRODUCT_ID
的格式类似于:
ABC123 Brown Desk
ABC1 Desk Set
DE84 Bar Stool
83UIK Spoon
目前,准备好的语句值看起来像(假设 productId
作为参数传入):
productId%
这意味着对于查询的 ID ABC1
,它将 return 两个 来自上面列表的结果:
ABC123 Brown Desk
ABC1 Desk Set
我的问题: 如何在查找中包含 space 以便查询针对 特定的 产品, 而不仅仅是前缀?
我试过了:
'productId %'
但它 return 根本没有任何结果。我如何告诉 Hibernate 我想查找 productId[SINGLE SPACE]%
?
尝试使用 CONCAT
而不是 'productId %'
或 '? %'
:
SELECT ... WHERE PRODUCT_ID LIKE CONCAT(?, ' %')
//------------------------------------------^^
或者您可以在最后将 productId
与 space 连接起来,然后再将其发送到查询:
Query query = session.createQuery("SELECT ... WHERE PRODUCT_ID LIKE ?");
query.setParameter(1, productId + " %");
//---------------------------------^^