MySql插入语句为二进制数据类型?

时间:2012-01-31 14:30:21

标签: mysql sql

我正在使用MySQL数据库。

我有一个表的数据类型为binary(16)的列。

我需要有关此表的insert语句的帮助。

Example:
CREATE TABLE `assignedresource` (
`distid` binary(16) NOT NULL
)

insert into assignedresource values ('9fad5e9e-efdf-b449');

Error : Lookup Error - MySQL Database Error: Data too long for column 'distid' at row 1

如何解决此问题?

3 个答案:

答案 0 :(得分:12)

您应该删除连字符以使值与字段的长度相匹配...

Example:
CREATE TABLE `assignedresource` (
`distid` binary(16) NOT NULL
)

insert into assignedresource values ('9fad5e9eefdfb449');

此外,MySQL标准是使用这种表示法将字符串表示为二进制... X'9fad5e9eefdfb449',即

insert into assignedresource values (X'9fad5e9eefdfb449');

答案 1 :(得分:0)

好吧,假设您要严格插入十六进制字符串,首先需要删除短划线然后“unhex”将字符串插入二进制文件(16)数据类型列,代码如下:

INSERT INTO `assignedresource` VALUES(UNHEX(REPLACE('9fad5e9e-efdf-b449','-','')));

另外......您插入的“可用”数据实际上是 8个字节 unashing 之后,所以二进制(如果你打算不存储短划线,那么会很好。

答案 2 :(得分:-1)

你的字符串是18个字符长,更改数据库

CREATE TABLE `assignedresource` (
`distid` binary(18) NOT NULL
)