【发布时间】:2012-09-17 03:17:45
【问题描述】:
似乎 DB2 和 Oracle 通过在右侧用空格填充较短的字符串来实现字符比较。但为什么呢?
如果数据库引擎修剪较大的字符值而不是用空格填充较短的字符值不是更好吗? IE。
如果我的查询是SELECT * from SOME_TABLE where CUSTOMER_NAME = 'Popeye ',那么数据库引擎最终会在SOME_TABLE 中的每一行添加空格,而它可以修剪此处传递的值,即'Popeye '
另外,只是想知道为什么 Oracle 和 DB2 只在右边添加空格?
【问题讨论】:
-
我认为在右边添加空格是类型的属性,而不是RDBMS引擎的属性。如果您声明一列
char(10),则会在较短的字符串中添加空格以使其长度为 10 个字符。如果您改为声明列varchar2(10),则不会发生填充。