使用HSQL运行单元测试时出现以下错误。
原因:java.sql.SQLSyntaxErrorException:user缺少权限或 找不到对象:NLSSORT;糟糕的SQL语法[];嵌套异常是 java.sql.SQLSyntaxErrorException:user缺少权限或对象 发现:NLSSORT
我选择在HSQL配置中使用oracle dialect,这对于其他Oracle特定查询非常有效。
这是失败的查询;
select COUNTRY_CODE, COUNTRY_E_DESC
from COUNTRY
order by nlssort(COUNTRY_E_DESC ,'NLS_SORT=BINARY_AI')
我需要设置另一个配置才能让HSQL使用NLSSORT吗?
答案 0 :(得分:0)
NLSSORT来自MySql,它是专有语法 世界上所有数据库都不支持它。
请参阅HSQL文档:
http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_ordering
<order by clause> ::= ORDER BY <sort specification> [ { <comma> <sort specification> }... ]
<sort specification> ::= <value expression> [ <collate clause> ] [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ]
然后:
<collate clause> ::= COLLATE <collation name>
文档中的一个例子:
SELECT id, lastname FROM customer ORDER BY lastname COLLATE "English"
使用COLLATE
代替NLSSORT