簡體   English   中英

JPQL(JPA)搜索子字符串

[英]JPQL (JPA) search substring

我面臨着通過某些(子)字符串搜索實體的簡單問題,它們可能包含這些字符串。

例如,我有用戶user1,usr2,useeeer3,user4,我將進入搜索窗口“use”,我希望返回user1,useeer3,user4。

我相信你現在知道我的意思了。 JPA(JQPL)有任何建設嗎? 在命名查詢中以某種方式使用WHERE進行搜索會很不錯。 類似於“SELECT u FROM User u WHERE u.nickname contains:substring”

使用LIKE表達式。 以下是4.6.9類似 JPA 1.0規范表達式 (JSR 220)的引用:

在條件表達式中使用比較運算符[NOT] LIKE的語法如下:

 string_expression [NOT] LIKE pattern_value [ESCAPE escape_character] 

string_expression必須具有字符串值。 pattern_value是一個字符串文字或字符串值輸入參數,其中下划線(_)代表任何單個字符,百分號(%)代表任何字符序列(包括空序列),所有其他字符代表為了自己。 可選的escape_character是單字符字符串文字或字符值輸入參數(即charCharacter ),用於轉義pattern_value下划線和百分號字符的特殊含義。

例如:

  • address.phone LIKE '12%3'適用於'123''12993',false適用於'1234'
  • asentence.word LIKE'l_se'對於'lost'是真的而對於'loose'是假的
  • aword.underscored LIKE'\\ _%'ESCAPE'\\'對於'_foo'為真,對於'bar'為false
  • address.phone NOT LIKE '12%3'對於'123'和'12993'為false,對於'1234'為true

如果 string_expressionpattern_valueNULL或未知,則LIKE表達式的值是未知的。 如果指定了escape_character且為NULL ,則LIKE表達式的值未知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM