Neamesis;
私は非常にOracleと使いやすさではありませんよ。私のプロジェクトは、Java 8、Springboot、JpaRepositoryとOracle DBを使用しています。私は自分のリポジトリにこのクエリをしました:
@Query("SELECT lex FROM Lexique lex WHERE UPPER(lex.titre) LIKE UPPER(CONCAT(:lettre,'%')) order by lex.titre ASC ")
List<Lexique> findAllWordsStartingBy(@Param("lettre") String lettre);
私は「E」の文字を持っている場合は、私にはよくE.で始まる単語を検索しかし、それはフランスのプロジェクトだと私はまた、「E」または「e」で始まる単語を取得する必要があります。そして、この特殊文字に関連付けることができ、すべての文字のために。
誰もが解決策を持っていますか?
Arkadiusz Lukasiewicz:
1)修正NLS_SORTとNLS_COMP
alter session set nls_sort=french_m_ai; --(_m -> multilingual , _ai -> accent insensitive and case insensitive )
alter session set nls_comp=linguistic; -- comparisions base on linguistic rule
今すぐあなたのクエリがアクセント小文字を区別しないと、大文字と小文字を区別しません
SELECT lex FROM Lexique lex WHERE lex.titre LIKE :lettre||'%'
しかし、これらのparamを変更すると、他のクエリに影響を与えます。
2)使用nlssort
.NlssortはRAW型を返すされ、それはのような句で使用することはできませんが、あなたはこの回避策を行うことができます。
@Query("SELECT lex FROM Lexique lex WHERE nlssort(substr(lex.titre,1,1), 'NLS_SORT=FRENCH_M_AI') = nlssort(:letter, 'NLS_SORT=FRENCH_M_AI') ", nativeQuery = true)
しかし、私は、第二の溶液についてはよく分かりません