2010-04-30 21 views
8

Bazı (alt) dizeler tarafından içerebilecekleri basit arama sorunlarıyla karşılaşıyorum.JPQL (JPA) arama dizini

E.g. Ben kullanıcı user1, usr2, useeeer3, user4 ve ben "use" arama penceresine gireceğim ve user1, useeer3, user4 döndürmeyi umuyoruz.

Şimdi ne demek istediğimi bildiğinize eminim. JPA'da (JQPL) herhangi bir inşaat var mı? WHERE kullanarak adlandırılmış sorgularda bir şekilde aramak güzel olurdu. "SELECT u u.nickname içerdiğinden SELECT" gibi bir şey içeriyor: substring "

cevap

13

Bir LIKE ifade kullanın. Burada bölümünden bir alıntı JPA 1.0 spec İfade (JSR 220) gibi 4.6.9:

aşağıdaki şekilde koşullu ifadede karşılaştırma operatörü [NOT] LIKE kullanımı sözdizimi:

string_expression [NOT] LIKE pattern_value [ESCAPE escape_character] 

string_expression bir dize değeri olması gerekir. pattern_value bir dize veya bir alt (_) tek bir karakterle temsil ettiği bir katar giriş parametresidir, bir yüzdesi (%) karakteri ( boş sekansı dahil) herhangi bir karakter dizisi anlamına gelir ve diğer tüm karakterleri kendileri için duruyor. isteğe escape_character değişmez bir tek karakter dizisi veya bir karakter değerli giriş parametresi (yani, char veya Character) ve özel anlam çizgi ve yüzde karakter pattern_value içinde kaçmak için kullanılan olup.

örnekleri şunlardır:

  • address.phone '12 GİBİ% 3' '1234' 123 ' '12993' ve yanlış için de geçerlidir'
  • LIKE 'l_se asentence.word \ \ _% 'KAÇIŞ ' '
  • GİBİ aword.underscored' gevşek 'için ve yanlış' kaybetmek 'için de geçerlidir' bar '
  • 'için yanlış ve ' _foo' için de geçerlidir' '12% 3' GİBİ
  • address.phone 123 için yanlıştır '' ve '12993' ve için de geçerlidir '1234'

ise değeri string_expression veya pattern_value olduğu NULL veya bilinmeyen, LIKE ifadesinin değeri bilinmiyor. escape_character belirtilirse ve NULL ise, LIKE ifadesinin değeri bilinmemektedir.

+0

Çok teşekkürler :-) – JavaBeginner