迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

MySQL 中将 Blob 数据转换为文本格式

作者:迹忆客 最近更新:2023/05/06 浏览次数:

本文将重点介绍 MySQL 数据库中的 BLOB 数据类型。 我们将深入了解 BLOB 数据类型并讨论其各种类型。

在本文的后面,我们将回顾将数据从 blob 字段转换为非二进制格式的不同方法。


MySQL 中的 BLOB 数据类型

大型二进制对象 (BLOB) 可以包含可变范围的信息。 它是MySQL中的一种数据类型,提供文件或图像的二进制存储。

有四种不同的类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。

这四个类别之间的主要区别在于它们可以存储的数据量。 LONGBLOB,顾名思义,可以容纳最多的数据,而 TINYBLOB 可以容纳最少的数据。

BLOB 值的处理方式类似于二进制字符串(字节字符串)。 它们具有二进制字符集、排序规则,并且比较和排序是在列值中字节的数值的帮助下完成的。

  1. TINYBLOB 最多可以存储 255 个字节。
  2. BLOB 最多可以存储 65535 字节,即 64 KB 的数据。
  3. 一个 MEDIUMBLOB 最多可以存储 16777215 字节,即 16MB 的数据。
  4. 一个 LONGBLOB 最多可以存储 4294967295 字节,即 4GB 的数据。

在 MySQL 中创建数据库

让我们从在 MYSQL 中创建一个数据库开始。 我们将在整篇文章中使用 MySQL Shell 与数据库进行交互。

保持专注并按照步骤清楚地理解它。

MySQL Shell

这个屏幕出现在我们第一次启动 MySQL Shell 时。 大家可能已经注意到了,JS是用MySQL写的,说明这个目前是JavaScript处理模式。

既然我们要运行SQL语句,那么在执行命令之前必须先切换到SQL模式。

为此,请键入 \sql 并按 Enter。

SQL Mode

现在 SQL 模式已激活。 现在我们需要把Shell和MySQL Server连接起来,然后我们就可以编写和执行SQL命令了。

对于连接,我们写 \connect root@localhost 并按 Enter。 这里的root是你安装MySQL Shell时设置的用户名。

按 Enter 后,它会询问您在安装过程中输入的密码。 输入密码,您的连接将处于活动状态。

SQL Connection

观察写在控制台上的消息。 它表示没有选择数据库。

让我们创建一个来使用。 要创建数据库,请编写 create database tech,其中 tech 是数据库名称。

您可以自由使用您选择的任何名称。 我们必须在创建数据库后指定 Shell 应该使用哪个数据库。

要选择数据库,请输入命令:use tech

Create Database Shell

现在我们可以看到 tech 是在 SQL 之前编写的,这意味着我们当前位于 tech 数据库中,可以直接在其上执行查询。

让我们在 tech 数据库中创建一个表,其中包含一些 BLOB 数据类型的字段。 要创建表,请在 Shell 中键入以下命令:

CREATE TABLE BLOB_DEMO
(
    FIRST_NAME VARCHAR(20),
    LAST_NAME VARCHAR(20),
    AGE INT,
    DESCRIPTION BLOB
);

该表将被创建。 我们已将 Description 字段的数据类型指定为 BLOB。

当我们在 MySQL Shell 中工作时,我们将通过向其中插入一些文本来观察 BLOB 数据类型的行为。 要将数据插入表中,请在 Shell 中键入以下命令。

INSERT INTO BLOB_DEMO VALUES
(
    "WILLIAM",
    "JOHN",
    27,
    "William John is a computer scientist."
),
(
    "BEN",
    "MARK",
    32,
    "Ben is a doctor. He lives in America."
);

数据现在已插入表中。 让我们从表中获取所有行。

要从表中检索所有数据,请在 Shell 中编写以下命令:

SELECT * FROM BLOB_DEMO

输出:

在 Shell 中显示表数据

观察描述栏。 正如我们上面所讨论的,BLOB 数据类型的行为是它像二进制字符串一样处理数据,我们在这里看到的是二进制编码数据。

现在,重点是我们如何以文本或非二进制格式检索我们的实际可读数据。 MySQL 为我们提供了两种方法来完成这项任务。

让我们在下面详细了解它们。


在 MySQL 中使用 CONVERT() 函数将 Blob 数据转换为文本

MySQL 提供了一个 CONVERT() 函数,可以将值转换为特定类型。 它在不同字符集之间转换数据。

CONVERT() 函数的语法是:

CONVERT(expr USING transcoding_name)

如果 expr 为 NULL,则函数返回 NULL。

在 Shell 中键入以下命令,以非二进制格式获取描述字段的数据。

SELECT CONVERT(DESCRIPTION USING UTF8) FROM BLOB_DEMO

输出:

MySQL Blob to String - CONVERT

这里值得注意的一点是 Shell 给出的警告。 在未来的版本中,UTF8 将是 UTFMB4 的别名。

最好用 UTFMB4 来明确。


在 MySQL 中使用 CAST() 函数将 Blob 数据转换为文本

MySQL 为我们提供了另一个名为 CAST() 的函数,它将一个值转换为特定类型。

CAST() 函数的语法是:

CAST(expression as type)

CAST() 函数将任何表达式转换为所需类型的值。

要以非二进制格式从描述字段中获取数据,请在 Shell 中输入以下命令:

SELECT CAST(DESCRIPTION AS CHAR(10000) CHARACTER SET UTFMB4) FROM BLOB_DEMO

输出:

MySQL Blob to String - CAST

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 Mysqldump 备份 MySQL 中的数据

发布时间:2023/05/09 浏览次数:192 分类:MySQL

本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。

更新 MySQL 表中的主键

发布时间:2023/05/09 浏览次数:61 分类:MySQL

本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。

在 MySQL 中获取命令历史记录

发布时间:2023/05/09 浏览次数:150 分类:MySQL

本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史

Oracle 的 decode 函数在 MySQL 中的等价物

发布时间:2023/05/09 浏览次数:115 分类:MySQL

本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 MySQL 中转换为十进制

发布时间:2023/05/09 浏览次数:150 分类:MySQL

有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。

在 MySQL 中获取当前日期和时间

发布时间:2023/05/09 浏览次数:145 分类:MySQL

本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间

更改 MySQL 服务器中的 max_allowed_packet Size

发布时间:2023/05/09 浏览次数:142 分类:MySQL

本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便