オラクル:文字または関連する特殊文字で開始する選択の言葉

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)

しかし、私は、第二の溶液についてはよく分かりません

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=214373&siteId=1