通过整理的火鸟命令

时间:2016-06-03 07:25:04

标签: sql utf-8 firebird firebird2.5

我对 Firebird 2.5 感到奇怪。

我的数据库有默认的charset = utf8。

我在 patienten 表中有一栏 p_nname

CREATE TABLE PATIENTEN (
   P_NNAME       VARCHAR(25) DEFAULT '' NOT NULL COLLATE UNICODE_CI,

我希望整理工作随处可见。我的意思是在WHERE和ORDER BY子句中。

我所拥有的是在WHERE中进行整理。下面的两个查询给出了类似的结果,这很好。

select * from patienten where p_nname='adler'
select * from patienten where p_nname='ADler'

问题是ORDER BY子句不能像我期望的那样工作。

此SQL的工作方式就像列没有UNICODE_CI排序规则。

select * from patienten order by p_nname

要获得良好排序所需的结果,我必须这样写:

select * from patienten order by p_nname collate unicode_ci

有没有办法在ORDER BY子句中省略COLLATE标志?

1 个答案:

答案 0 :(得分:1)

看起来确实是一个错误,documentation状态:

  

关键字COLLATE指定字符串列的归类顺序   如果你需要一个与正常排序不同的排序规则   柱。正常的归类顺序将是默认的归类顺序   数据库字符集或已明确设置的数据库字符集   专栏的定义。

所以它应该工作而不指定ORDER BY中的collat​​e子句。我建议你提交错误报告。