我应该在Oracle中使用VARCHAR2或CHAR作为数据类型吗?
有人建议我使用CHAR来处理我需要的这些新表,但我很担心,因为这些新表将用于普及使用VARCHAR2数据类型的现有表.我担心在VARCHAR2字段中放置额外的空格以及比较问题.我知道有一些方法可以通过修剪或转换来比较它们,但我担心它会使我的代码变得杂乱无章.
你有什么看法?
iva*_*tpr 12
我担心在VARCHAR2字段中放置额外的空格以及比较问题.我知道有一些方法可以通过修剪或转换来比较它们,但我担心它会使我的代码变得杂乱无章.
实际上恰恰相反.使用CHAR会强制你的字符串固定长度,如果它们太短,用空格填充它们.因此,当在使用数据的任何应用程序中将CHAR与常规字符串进行比较时,该应用程序每次都需要添加修剪.换句话说,VARCHAR2是自然导致更清晰代码的选择.
通常,您应该始终使用VARCHAR2,除非您有一个非常具体的原因,您需要CHAR列.
如果您担心前面或末尾有额外空格的字符串,那么可以想到一些选项:
读:
引自 AskTom 文章:
CHAR/NCHAR 实际上只不过是变相的 VARCHAR2/NVARCHAR2,这一事实使我认为实际上只有两种字符串类型需要考虑,即 VARCHAR2 和 NVARCHAR2。我从未在任何应用程序中找到 CHAR 类型的用途。由于 CHAR 类型总是将结果字符串空白填充到固定宽度,我们很快发现它在表段和任何索引段中都消耗了最大的存储空间。这已经够糟糕了,但是还有另一个重要的原因要避免使用 CHAR/NCHAR 类型:它们在需要检索此信息的应用程序中造成混淆(许多在存储后无法“找到”他们的数据)。其原因与字符串比较的规则及其执行的严格性有关。
| 归档时间: |
|
| 查看次数: |
9916 次 |
| 最近记录: |