Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String PosqtgreSQL字符串比较_String_Postgresql_Comparison - Fatal编程技术网

String PosqtgreSQL字符串比较

String PosqtgreSQL字符串比较,string,postgresql,comparison,String,Postgresql,Comparison,我尝试比较PostgreSQL中的字符串 以下是我执行的查询: select 'UK (z'>'Ukraine'; 这一个返回真 然后我尝试以下一个: select 'UK ('>'Ukraine'; 这一个返回false 我认为,这两个都应该返回false,并且在另一台PostgreSQL服务器上,它的行为正确。但主服务器在此类操作中产生了不正确的结果。我做错了什么?如果您有疑问,请尝试: SHOW lc_collate; 这将显示默认排序规则 现在可以在列级别或查询级别指定

我尝试比较PostgreSQL中的字符串

以下是我执行的查询:

select 'UK (z'>'Ukraine';
这一个返回真

然后我尝试以下一个:

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”是否大于“UKNERAL”,第二个问题是“UK”是否大于“UKNERAL”,而“UKNERAL”不是。如果您有疑问,请尝试:

SHOW lc_collate;
这将显示默认排序规则

现在可以在列级别或查询级别指定排序规则。由于您的问题处于查询级别,您可以:

select 'UK (z'::text > 'Ukraine' COLLATE "C"; -- and
select 'UK (z'::text > 'Ukraine' COLLATE "ucs_basic"; -- both return false

实际情况是,自然语言排序顺序忽略了空格和非字母数字字符,因此第一个问题是“UKz”是否大于“UKNERAL”,第二个问题是“UK”是否大于“UKNERAL”,而“UKNERAL”是否大于“UKNERAL”。

这两台机器上的语言环境(排序规则)?在不正确的机器上-UTF8,在这两台机器上使用correct-Russian_-Russia.1251本地(排序)?在不正确的一台机器上使用UTF8,在correct-Russian_-Russia.1251+1,尽管“自然语言排序顺序忽略空白和非字母数字字符”是一个巨大的简化
SELECT'UK(z'>'UK z';
SELECT'UK z'>'UKz'
确实返回
true
+1,尽管“自然语言排序顺序忽略空格和非字母数字字符”是一个巨大的简化。
选择'UK(z'>'UK z';
选择'UK z'>'UKz'
确实返回
true