为什么 初始空间 大于“ 10”的“ 2”?
select ' 2' > '10';
?column?
----------
t
(1 row)
我在latin1和utf8英语归类中都尝试过:
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
-----------+------------+-----------+------------------+------------------+-----------------------
cpn | cpn | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
teste | cpn | LATIN1 | en_US.ISO-8859-1 | en_US.ISO-8859-1 |
我知道它与类型有关,因为当它被强制转换时,它可以按预期工作:
teste=> select ' 2'::char > '10';
?column?
----------
f
(1 row)
这里到底发生了什么?
编辑:
以上所有操作都是在Fedora 13中使用8.4.8完成的。但是我只是在Centos 6中使用9.04进行了测试,结果相同:
select ' 2' > '10';
?column?
----------
t
(1 row)
数据库清单
Name | Owner | Encoding | Collation | Ctype | Access privileges
-----------+------------+-----------+-------------+-------------+-----------------------
cpn | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
新编辑:
这是为了进一步混淆:
select ' ' > '1';
?column?
----------
f
(1 row)
我认为PostgreSQL自动尝试找出幕后的类型,而在Linux中它试图摆脱’‘,其中一些比较也是基于语言环境的。
因此,' 2' > '10'
变成'2'>'10'
与比较是'2'>'1'
;它们不相等,因此无需继续字符串的其余部分,并且ascii('2')
大于ascii('1')
,因此其结果为true。
如果它是一个相等操作(例如‘22’= ‘22’),则将导致结果为false,因为Postgres进行了逐字节比较。这很重要,因为引擎在进行比较时会使用两种不同的算法。
如果通过类型转换指定类型,则不会覆盖空间规则(' '=>''
)。
同样 值得一 提的是: #postgresql中的RhodiumToad和Peerce
Ruby是"一种用于迅速和简便的面向对象编程的解释性脚本语言";这意味着什么? 解释性脚本语言: 有直接呼叫系统调用的能力 强大的字符串操作和正则表达式 开发中快速回馈 迅速和简便: 无需变量声明 变量无类型 语法简单而坚实 自动内存管理 面向对象编程 任何事物都是一个对象 类,继承,方法,等等 单态方法 模块糅合 迭代器和闭包(closures) 以及: 多精度整数 异常处理模式 动态装载 线程
有人可以帮我理解吗 此语句是否正确:这意味着bcdc是Baseclass类类型,其值是Dervedclass对象类型?此外,这是什么意思,为什么一个对象会这样实例化,而不是让类类型与正在实例化的新对象相同,如? 为什么
可能的重复: Java如何处理整数下溢和上溢,您将如何检查它? system.out.println(4*2147483647)在Java中如何等于-4? 我想知道这为什么成立:
问题内容: Python如何评估表达式? 我插了多少,这就是答案。请任何人可以解释这种行为 因为它是印刷,因为它是印刷 问题答案: 您的表情与: 可以在任何数字表达式之前使其为负,或不执行任何操作(存在对称性选项)。带有负号: 和 我看到您澄清了您的问题,说您来自C背景。在Python中,没有像C和C这样的增量运算符,这可能是造成混淆的原因。要递增或递减变量,或在Python中使用以下样式:
问题内容: 如果我尝试这样做: 我得到以下输出: 演示:http://codepad.org/ncVuJtJu 这是为什么? 我希望将其作为输出: 我的理解: 但是为什么不输出呢? 问题答案: 所有解释为什么得到2而不是1的答案实际上都是错误的。根据PHP文档,混合并以这种方式是不确定的行为,所以你可以得到1或2切换到不同版本的PHP可能会改变你得到的结果,这将是一样有效。 请参阅示例1,其中显示
问题内容: java.util.Random源代码的第294行说 为什么是这样? 问题答案: 该描述并不完全准确,因为0不是2的幂。更好的说法是 当n是2的幂或2的幂的负数或零时。 如果n是2的幂,则二进制中的n是单个1,后跟零。-n为2的补数是倒数+ 1,因此位排成一行 要了解其工作原理,请将二进制补码视为逆+ 1。 因为当您添加一个得到两个的补码时,您会一直进行到一个。 如果n不是2的幂,则结