在MySql Connector/Net上设置PAD_CHAR_TO_FULL_LENGTH

zysjyyx4  于 2023-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(165)

MySQL Reference Manual所述,
CHAR列的长度固定为创建表时声明的长度。长度可以是0到255之间的任何值。当存储CHAR值时,将使用空格将其右填充到指定长度。检索CHAR值时,除非启用了PAD_CHAR_TO_FULL_LENGTH SQL模式,否则将删除尾随空格。
如何在Connector/Net中启用PAD_CHAR_TO_FULL_LENGTH标志?(非ODBC)

egdjgwm8

egdjgwm81#

Server SQL Modes所述:
要在运行时更改SQL模式,请使用SET语句设置全局或会话sql_mode系统变量:

SET GLOBAL sql_mode = 'modes';
SET SESSION sql_mode = 'modes';

设置GLOBAL变量需要SUPER权限,并影响从那时起连接的所有客户端的操作。设置SESSION变量只影响当前客户端。每个客户端可以随时更改其会话sql_mode值。
因此,您需要沿着以下行执行一个普通的旧SQL命令:

SET SESSION sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
eagi6jfj

eagi6jfj2#

如果您不想更改SQL模式,一个解决方法是先TRIM值,原因是CHAR类型是固定的。
示例:

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `field1` varchar(10) DEFAULT NULL,
  `field2` char(10) DEFAULT NULL,
  `comb` varchar(20) GENERATED ALWAYS AS (concat(TRIM(`field2`),'test')) STORED,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

相关问题