使用NLSSORT时HSQL(Hypersonic SQL)抛出错误

时间:2016-06-02 21:19:16

标签: java oracle unit-testing

使用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吗?

1 个答案:

答案 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