您好我在使用以下查询时尝试在列名为per_va_first_name
的视图上使用collate:
SELECT *
FROM person_view
WHERE NLSSORT(per_va_first_name, 'NLS_SORT = FRENCH_AI') = NLSSORT('mickaël', 'NLS_SORT =FRENCH_AI')
我收到错误
ORA-12702:SQL函数中使用的无效NLS参数字符串
我是oracle和nlssort
的新手。任何人都可以帮我指出我的错误是什么?
同时我想在Hibernate for Java中使用collate。相同的法国字符集。
编辑:
当我在sql中使用这些命令时
alter session set nls_sort=French_AI;
alter session set nls_comp=linguistic;
执行此查询时,我得到所需的输出
SELECT * FROM v_myuser_search_test_ea4 where per_va_first_name like 'Mickaël%'
如何在Hibernate中执行此操作?有没有办法可以将'CI'附加到French_AI,使其成为'French_AI_CI'
答案 0 :(得分:-1)
根据http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions113.htm#SQLRF51562
上的Oracle文档您可以将查询更改为
SELECT *
FROM person_view
ORDER BY NLSORT(per_va_first_name, 'NLS_SORT = FRENCH_AI_CI')
Hibernate应该理解它,但是你已经失去了数据库的可移植性,因为这是Oracle特有的功能。