截断的 CHAR 值

在不符合 ANSI 的数据库中,如果您为 CHAR(n) 列或变量赋值,且那个值的长度超过 n 个字符,则数据库服务器截断最后的那些字符,不发出错误。例如,假设您定义此表:
CREATE TABLE tab1 (col_one CHAR(2);
数据库服务器在下列 INSERT 语句中截断数据值,分别为 "jo""sa",但不返回错误:
INSERT INTO tab1 VALUES ("john");
        INSERT INTO tab1 VALUES ("sally");

因此,在不符合 ANSI 的数据库中,当插入的或更新的值超过声明的长度 n 时,不强制要求 CHAR(n) 列或变量的语义完整性。(但是,在符合 ANSI 的数据库中,在发生字符数据截断时,数据库服务器发出错误 -1279。)