mysql - MySQL 枚举值中的空格、撇号和符号

标签 mysql

我正在创建一个 MySQL 表,其中一个列的类型是 ENUM

我有几个不同的 ENUM 值。其中一些是两个或多个单词,例如Hugo Boss。

其他 ENUM 值中有撇号,例如男性或其他角色,例如&.

我的问题分为两部分:

  1. 可以在 ENUM 值(两个单词或更多)中包含一个或多个空格吗?
  2. ENUM 值中是否允许使用撇号、与号和其他此类字符?如果是,我将如何放置它们?

最佳答案

似乎是这样:

MySQL [files]> create temporary table t(foo ENUM('123', '1&2', '3\'4'));
Query OK, 0 rows affected (0.17 sec)

MySQL [files]> show create table t\G
*************************** 1. row ***************************
       Table: t
Create Table: CREATE TEMPORARY TABLE `t` (
  `foo` enum('123','1&2','3''4') COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.09 sec)

MySQL [files]> insert into t values (0), (1), (2), (3);
Query OK, 4 rows affected, 1 warning (0.12 sec)
Records: 4  Duplicates: 0  Warnings: 1

MySQL [files]> show warnings;
+---------+------+------------------------------------------+
| Level   | Code | Message                                  |
+---------+------+------------------------------------------+
| Warning | 1265 | Data truncated for column 'foo' at row 1 |
+---------+------+------------------------------------------+
1 row in set (0.11 sec)

MySQL [files]> select * from t;
+------+
| foo  |
+------+
|      |
| 123  |
| 1&2  |
| 3'4  |
+------+
4 rows in set (0.09 sec)

MySQL [files]>

注意:警告意味着我使用了一个不允许的值 - 我试图插入 3,它没有被定义为 ENUM 的值。

因此它可以完美地工作——与 MySQL 中的任何其他字符串一样。您只需要注意正确对待它们 - 作为十六进制值,或使用 mysql_real_escape_string() 或准备好的语句。这提供了“关键”值的正确通信,例如 \\'" 等。

例如,如果我有一个包含“3'4”的字符串,并且我想将其定义为枚举的一部分,我可以通过放置 0x332734'3\'4' 到适当的地方。 '3\'4'是所用编程语言中mysql_real_escape_string("3'4")的结果。

NUL 字符不允许作为 ENUM 组件,因为它们将出现在数据字符串中 - 不过,使用的字符串之前已终止。

关于mysql - MySQL 枚举值中的空格、撇号和符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502715/

相关文章:

mysql - 在MYSQL中获取毫克、克、公斤的总和

MySQL 对行组进行排序

php - 值作为 2147483647 插入数据库

c++ - libmysqlclient.18.dylib 内存泄漏

mysql - 如何远程拉取mysql数据库?

MySQL 将行转为动态数量的列

python - sqlalchemy 查询 : select using list of tuples

mysql - 对使用索引时查看 50 万行的 mysql 感到困惑

php - 用 PDO 执行大的 Sql 文件?

mysql - 从 VBA 连接、更新和关闭与 MySQL 的连接