MySQL MySQL指定字符字符串数据类型的CHARACTER SET二进制属性时的反应

MySQL MySQL指定字符字符串数据类型的CHARACTER SET二进制属性时的反应

MySQL 中,数据类型 CHAR 和 VARCHAR 表示了一定长度的字符串。当指定 CHARACTER SET 时,我们可以在其后跟一个二进制属性,某些属性适用于特定字符集,这样可以增加更多的适用性和效率。

二进制属性可以指定为以下之一:

  • BINARY
  • VARBINARY
  • NATIONAL BINARY
  • NATIONAL VARBINARY

这些属性会影响字符集以及编码方式。

阅读更多:MySQL 教程

示例

下面是一些展示 MySQL CHARACTER SET 二进制属性行为的示例:

首先,创建一个测试表并添加一些数据:

CREATE TABLE test (
    id INT PRIMARY KEY,
    name CHAR(6) CHARACTER SET utf8mb4 BINARY
);

INSERT INTO test VALUES (1, 'David');
INSERT INTO test VALUES (2, 'david');
INSERT INTO test VALUES (3, 'DaviD');

然后,运行查询:

SELECT * FROM test WHERE name = 'David';

结果如下:

+----+-------+
| id | name  |
+----+-------+
|  1 | David |
+----+-------+

注意我们并没有匹配到其他大小写的 David,这是因为我们指定了 CHARACTER SET 为 BINARY,这会强制MySQL进行区分大小写的二进制比较。

接下来,让我们来看一个 VARBINARY 的更复杂的示例:

CREATE TABLE test2 (
    id INT PRIMARY KEY,
    name VARBINARY(15) CHARACTER SET utf8mb4
);

INSERT INTO test2 VALUES (1, 'David');
INSERT INTO test2 VALUES (2, 'david');
INSERT INTO test2 VALUES (3, 'DaviD');

运行查询:

SELECT * FROM test2 WHERE name = 'David';

结果如下:

+----+-------+
| id | name  |
+----+-------+
|  1 | David |
+----+-------+

由于我们指定了 VARBINARY 属性,MySQL会按顺序比较字节,而不是跟其他字符串比较。

结论

在MySQL中,指定数据类型CHAR和VARCHAR使用二进制属性时,可以通过设置指定的二进制属性,可以更好地控制MySQL进行字符串比较的精度和性能。二进制属性特别有用,因为它们提供了对不同字符集的支持,从而满足了不同场景的需求需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程