【问题标题】:Inserting hex value in MySQL在 MySQL 中插入十六进制值
【发布时间】:2010-11-29 17:20:02
【问题描述】:

我使用 Java 创建了一个 SQL 数据库。我创建了一个包含两列的表,第一列是一个递增的大整数,第二列我尝试将其定义为 char、varchar 和二进制。

但我仍然没有得到想要的功能。假设我尝试将十六进制数 0a 存储到 char 列中,但出现错误。我在开头附加了0x,它似乎可以存储,但是当我打印出内容时它是空白的。或者在某些情况下,我会得到诸如“/”或“?”之类的字符。我也尝试使用 SQL 资源管理器,它给我查看表格的相同结果,

我的问题是我需要存储一个八字符的十六进制字符串,例如eb8d4ee6

有人可以告诉我如何做到这一点吗?

【问题讨论】:

    标签: mysql data-storage


    【解决方案1】:

    http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html

    MySQL 支持十六进制值, 使用 X'val'、x'val' 或 0xval 编写 格式,其中 val 包含十六进制 数字(0..9,A..F)。的信箱 数字无所谓。对于值 使用 X'val' 或 x'val' 格式编写, val 必须包含偶数个 位数。对于使用 0xval 写入的值 语法,包含奇数的值 位数被视为具有 一个额外的前导 0。例如,0x0a 和 0xaaa 被解释为 0x0a 和 0x0aaa。

    在数字上下文中,十六进制 值的行为类似于整数(64 位 精确)。在字符串上下文中,它们 像二进制字符串一样,其中每个 一对十六进制数字转换为 人物:

    您可能应该将十六进制数存储在整数列中。然后,您可以在使用HEX() 函数进行选择时转换回十六进制。

    例如,

    INSERT INTO MyTable (`MyIntegerColumn`) VALUES (0xeb8d4ee6);
    

    【讨论】:

    • 您好,感谢您的快速回复,我已经阅读了这篇文章,正如我所说的我是一个 sql 菜鸟,但我尝试附加 0x 将其定义为十六进制,但查看表时该值不存在?
    • @user524156:尝试将列定义为类型integer
    • 这是我创建表的 sql 语句
    • String sql = "CREATE TABLE Table1(encrypt_key BIGINT NOT NULL AUTO_INCREMENT,encrypt_val VARCHAR(10),primary key (encrypt_key))";
    • @user524156:看我的例子INSERT
    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 2014-01-04
    • 2018-07-26
    • 2015-01-10
    • 2010-12-07
    • 1970-01-01
    • 2012-05-24
    • 2010-12-15
    相关资源
    最近更新 更多