如何为mysql的bit列插入值

Sri*_*sDJ 12 mysql

我想将值插入MySQL中的位类型列.但我收到数据截断错误.

CREATE TABLE `BITTESTTABLE` (
  `db_field` varchar(50) NOT NULL,
   `is_editable` bit(1) NOT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)

如果我插入一行

INSERT INTO BITTESTTABLE values('XYZ','0')

我正进入(状态

第1行的列'is_editable'的数据太长

那么如何插入位类型列的数据?

小智 17

你应该使用:

INSERT INTO `BITTESTTABLE` VALUES('XYZ', b'0');
Run Code Online (Sandbox Code Playgroud)

  • 用于直接进入 MySQL Workbench 网格。 (2认同)

Piy*_*pta 5

您需要像这样插入位格式的数据。INSERT INTO BITTESTTABLE values('XYZ',0);这样做values('XYZ','0')是将其作为字符串值。


Ahm*_*han 5

由于bit是数字而不是字符串,因此您需要像这样输入

INSERT INTO BITTESTTABLE values('XYZ',0)
Run Code Online (Sandbox Code Playgroud)

  • 假设如果我将列值插入为“ 123”,那么mysql是否接受整数数据类型。它不会给出错误。 (2认同)

hou*_*sam 5

可以直接使用true/false;但我不确定这是否与 MySQL 本身或 InnoDB 有关:示例:

INSERT INTO BITTESTTABLE values('XYZ',false);    
INSERT INTO BITTESTTABLE values('XYZ',true);
Run Code Online (Sandbox Code Playgroud)

确保尝试运行:

SELECT TRUE , FALSE  ;
Run Code Online (Sandbox Code Playgroud)

结果