Oracle: seleccione las palabras que empiezan por el carácter o un carácter especial asociado

Neamesis;

No estoy muy a gusto con Oracle. Mi proyecto utiliza Java 8, Springboot, JpaRepository y una base de datos Oracle. Tengo esta consulta en mi repositorio:

@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);

Cuando tengo la "E" carta, así recuperar las palabras que comienzan con E. Pero es un proyecto francés y también necesitará para recuperar las palabras que empiezan con "E" o "e". Y esto para todas las letras que se pueden asociar a los caracteres especiales.

Alguien tiene una solución ?

Arkadiusz Lukasiewicz:

1) Modificar NLS_SORT, y 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

Ahora la consulta es insensible acento y sensible a mayúsculas

SELECT lex FROM Lexique lex WHERE lex.titre LIKE :lettre||'%'

Pero el cambio de éstos parámetro afectará a otras consultas.

2) Uso nlssort.Nlssort está volviendo tipo RAW y no es posible utilizarlo como con la cláusula pero se puede hacer esta solución.

@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)

Pero no estoy seguro acerca de la segunda solución

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=214376&siteId=1
Recomendado
Clasificación