PosqtgreSQL字符串比较
问题描述:
我尝试比较PostgreSQL中的字符串。PosqtgreSQL字符串比较
这里是我执行查询:
select 'UK (z'>'Ukraine';
这一个返回true;
然后我尝试以下之一:
select 'UK ('>'Ukraine';
这一个返回false;
我认为,这两个应该返回false,并在另一个PostgreSQL服务器上表现正确。但是主服务器在这样的操作中产生不正确的结果。我究竟做错了什么?
答
如果您有任何疑问尝试:
SHOW lc_collate;
这将显示您的默认排序规则。
现在您可以在列级别或查询级别指定排序规则。由于您的问题是,在查询级别,您可以:
select 'UK (z'::text > 'Ukraine' COLLATE "C"; -- and
select 'UK (z'::text > 'Ukraine' COLLATE "ucs_basic"; -- both return false
什么实际发生的自然语言整理顺序忽略空格和非字母数字字符,所以第一个是“UKZ”>“乌克兰”是否它是,其次是“英国”是否大于“乌克兰”,而不是。
+0
+1,虽然_“自然语言整理顺序忽略空白和非字母数字字符”_是一个巨大的简化。 'SELECT'UK(z'>'UK z';'和'SELECT'UK z'>'UKz''确实返回'true'。 – 2013-03-17 13:43:57
这两台机器上的语言环境(整理)? – 2010-09-21 13:54:20
错误的 - UTF8,正确 - 俄罗斯俄罗斯1251 – akvakh 2010-09-22 07:16:28