以 MYSQL 二进制数据类型存储 128 位二进制数

Store 128 bit binary number in MYSQL binary data type

在我的研究中,我看过 MySql insert statement to binary datatype?https://dba.stackexchange.com/questions/904/mysql-data-type-for-128-bit-integers

但我似乎无法复制他们的结果。

我正在将棋盘的 64 个方格转换为 64 位二进制数

像这样 000010010100010110100011011001000100011110001010001000100000110

我在 mysql table 中有一列类型为 binary(8)

我的假设是它需要 8 个字节,因为它是 64 位,但是它声称我尝试提供的输入太大。

我只能找到很少的关于二进制数据类型的资源,我知道我一定是犯了一些错误,我假设它试图将每个值作为 char 读取到某个东西,但我不确定为什么。

请帮助我如何将这个大数字存储在我的 table 中。

MySQL 将数字文字 000010010100010110100011011001000100011110001010001000100000110 解释为大于 8 个字节的十进制数。

二进制数据类型的工作方式与 char/varchar/text 类似,但值可以是任何字节序列。

您可以使用经过适当转义的字符串文字,但很难手动读取它们。

最方便和通用的方法(据我所知)是使用HEXUNHEX函数在十六进制表示和实际数据中的字节之间进行转换。例如:

INSERT INTO tbl (col) VALUES (UNHEX('5BA238AEB1E956BDEA214C4C7FE9951B'))


SELECT HEX(col) FROM tbl

您也可以使用二进制数字文字:

INSERT INTO tbl (col) VALUES (0b000010010100010110100011011001000100011110001010001000100000110)

如果值是 64 位,您可以使用 BIGINT 字段。