代码之家  ›  专栏  ›  技术社区  ›  Nathan Wailes

在SQL中,在定义字符串时,前导“x”是什么意思?

  •  2
  • Nathan Wailes  · 技术社区  · 6 年前

    我正在做一个项目,在这个项目中,我得到了一个SQL文件来生成一个数据库和一些示例值。其中一个领域( HTMLContent 是类型 blob 插入的值的形式为 X'<long-string-of-numbers-and-letters>' .

    前导“x”是什么意思?

    CREATE TABLE `advertDOM` (
      `id` int(11) NOT NULL,
      `HTMLContent` blob COMMENT 'DOM data to be displayed on screen',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    INSERT INTO `advertDOM` (`id`, `HTMLContent`)
    VALUES
        (1,X'3C646976206964203D2022636F6E74656E742220636C617373203D202266756C6C73637265656E2D6C616E647363617065223E0A20203C646976206964203D202277312D636F6E7461696E6572223E0A202020207B77317D0A20203C2F6469763E0A3C2F6469763E'),
        (2,X'3C646976206964203D2022636F6E74656E742220636C617373203D202274776F2D77696E646F772D6C616E647363617065223E0A20203C646976206964203D202277312D636F6E7461696E6572223E0A202020207B77317D0A20203C2F6469763E0A20203C646976206964203D202277322D636F6E7461696E6572223E0A202020207B77327D0A20203C2F6469763E0A3C2F6469763E'),
        (3,X'3C646976206964203D2022636F6E74656E742220636C617373203D202266756C6C73637265656E2D706F727472616974223E0A20203C646976206964203D202277312D636F6E7461696E6572223E0A202020207B77317D0A20203C2F6469763E0A3C2F6469763E'),
        (4,X'3C646976206964203D2022636F6E74656E742220636C617373203D202274776F2D77696E646F772D706F727472616974223E0A20203C646976206964203D202277312D636F6E7461696E6572223E0A202020207B77317D0A20203C2F6469763E0A20203C646976206964203D202277322D636F6E7461696E6572223E0A202020207B77327D0A20203C2F6469763E0A3C2F6469763E');
    
    1 回复  |  直到 6 年前
        1
  •  5
  •   Tim Biegeleisen    6 年前

    来自MySQL documentation :

    十六进制文字值使用x'val'或0x val表示法写入,其中val包含十六进制数字(0..9,a..f)。数字和任何前导x的字母大小写都不重要。前导0x区分大小写,不能写为0x。

    所以,您只需要查看十六进制字符串。根据表定义,可以看到这些字符串被存储为二进制的BLOB列。