当在 SELECT 语句的 ORDER BY 子句中指定列子串时,不完整字符也可能会产生问题。
根据此列中包含的值对查询结果进行排序。
在分层查询中,您可以有选择地指定 ORDER SIBLINGS BY 子句,该子句对数据层次结构的每个级别使用类似的语法,来为 CONNECT BY 子句返回的行排序。
如果语言环境支持字符长度均相同的多字节代码集,那么可以使用 ORDER BY 子句中的列子串。但是,更典型的情况是多字节代码集包含变长字符。在这种情况下,可能会发现在 ORDER BY 子句中指定列子串没有任何意义。
SELECT * FROM multi_data ORDER BY multi_chars[7,12]
如果语言环境支持字符长度均为 2 个字节的多字节代码集,即会知道列中的第四个字符从字节位置 7 开始,列中第六个字符在字节位置 12 结束。上述 SELECT 语句不会生成不完整字符。
但是,如果多字节代码集包含单字节字符、双字节字符和 3 个字节字符的混合,子串 multi_chars[7,12] 可能会创建不完整字符。在这种情况下,在 ORDER BY 子句中指定列子串时可能会获得意外的结果。