我对 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标志?
答案 0 :(得分:1)
看起来确实是一个错误,documentation状态:
关键字COLLATE指定字符串列的归类顺序 如果你需要一个与正常排序不同的排序规则 柱。正常的归类顺序将是默认的归类顺序 数据库字符集或已明确设置的数据库字符集 专栏的定义。
所以它应该工作而不指定ORDER BY中的collate子句。我建议你提交错误报告。