PostgreSQL文本排序异常:JSON字符串空格小于末尾?Bug还是预期行为?
PostgreSQL JSON字段转字符串排序异常问题
普通TEXT类型排序(正常结果)
执行以下SQL查询:
SELECT * FROM ( SELECT 'abc' AS name UNION ALL SELECT 'abc d' AS name ) AS test ORDER BY name;
得到预期结果:abc排在abc d之前,即字符串末尾的空格会让排序位置更靠后。
JSON字段转字符串排序(异常结果)
执行以下JSON相关查询:
SELECT * FROM ( SELECT '{"name":"AbC"}'::JSON AS json UNION ALL SELECT '{"name":"aBc D"}'::JSON AS json ) AS test ORDER BY LOWER((json -> 'name')::TEXT);
结果与预期相反:aBc D对应的记录排在AbC之前,即提取出的带空格的字符串排序反而更靠前。
测试背景与诉求
多次测试普通TEXT类型的排序及LOWER()处理均表现正常,仅在JSON字段转字符串后排序出现该异常。现寻求PostgreSQL官方文档相关说明,或确认该现象是否为Bug。
内容的提问来源于stack exchange,提问作者Daniele Ricci
相关产品推荐
相关产品推荐

