# DWS字段设计规则
#### 选择数据类型
在字段设计时，基于查询效率的考虑，一般遵循以下原则：
- 【建议】尽量使用高效数据类型。 选择数值类型时，在满足业务精度的情况下，选择数据类型的优先级从高到低依次为整数、浮点数、NUMERIC。
  
- 【建议】当多个表存在逻辑关系时，表示同一含义的字段应该使用相同的数据类型。
- 【建议】对于字符串数据，建议使用变长字符串数据类型，并指定最大长度。请务必确保指定的最大长度大于需要存储的最大字符数，避免超出最大长度时出现字符截断现象。除非明确知道数据类型为固定长度字符串，否则，不建议使用CHAR(n)、BPCHAR(n)、NCHAR(n)、CHARACTER(n)。 关于字符串类型的详细说明，请参见[常用字符串类型介绍]。
  
 
 #### 常用字符串类型介绍
在进行字段设计时，需要根据数据特征选择相应的数据类型。字符串类型在使用时比较容易混淆，下表列出了DWS中常见的字符串类型：
表1常用字符串类型 
| **名称**               | **描述**                                                      | **最大存储空间** |
|:---|:---|:---|
| CHAR(n)              | 定长字符串，n描述了存储的字节长度，如果输入的字符串字节格式小于n，那么后面会自动用空字符补齐至n个字节。       | 10MB       |
| CHARACTER(n)         | 定长字符串，n描述了存储的字节长度，如果输入的字符串字节格式小于n，那么后面会自动用空字符补齐至n个字节。       | 10MB        |
| NCHAR(n)             | 定长字符串，n描述了存储的字节长度，如果输入的字符串字节格式小于n，那么后面会自动用空字符补齐至n个字节。       | 10MB       |
| BPCHAR(n)            | 定长字符串，n描述了存储的字节长度，如果输入的字符串字节格式小于n，那么后面会自动用空字符补齐至n个字节。       | 10MB       |
| VARCHAR(n)           | 变长字符串，n描述了可以存储的最大字节长度。                                      | 10MB       |
| CHARACTER VARYING(n) | 变长字符串，n描述了可以存储的最大字节长度；此数据类型和VARCHAR(n)是同一数据类型的不同表达形式。        | 10MB       |
| VARCHAR2(n)          | 变长字符串，n描述了可以存储的最大字节长度，此数据类型是为兼容Oracle类型新增的，行为和VARCHAR(n)一致。 | 10MB       |
| NVARCHAR2(n)         | 变长字符串，n描述了可以存储的最大字符长度。                                      | 10MB       |
| TEXT                  | 不限长度(不超过1GB-8203字节)变长字符串。                                   | 1GB-8203字节  |
   
