MySQL视图和列名称区分大小写

时间:2017-01-05 13:26:33

标签: mysql

这可能听起来像一个简单的问题,但是我找不到令人满意的答案。

在MySQL中,如果您使用的是基于Unix的计算机,只要您在名称中跟随Camel Case,表名称和列名称在运行查询时就不区分大小写。

现在,这是一个棘手的部分,让我们假设下面的表结构。

> desc table1
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(10) | YES  |     | NULL    |       |
| id    | int(11)     | NO   | PRI | NULL    |       |
+-------+-------------+------+-----+---------+-------+

> desc table2
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name1 | varchar(10) | YES  |     | NULL    |       |
| id    | int(11)     | NO   | PRI | NULL    |       |
+-------+-------------+------+-----+---------+-------+

> desc table_view
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
| name1 | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

现在,如果我在我的表上使用大写字母提到的列名运行查询,那么如果查询具有小写列名,则结果将具有大写和小写的列名。

> select name from table1
+-------+
| name  |
+-------+
| test  |
| test2 |
+-------+

> select NAME from table1
+-------+
| NAME  |
+-------+
| test  |
| test2 |
+-------+

但是,当我在View上运行相同的查询时,列名称与创建视图时使用的字符串的大小写相匹配。即结果数据与视图具有相同的列,而不是查询中使用的列。

> select name from table_view
+-------+
| name  |
+-------+
| test  |
| test2 |
+-------+

> select NAME from table_view
+-------+
| name  |
+-------+
| test  |
| test2 |
+-------+

是否有一种简单的方法可以解决此问题并确保视图也遵循与使用查询结果进行响应时表格相同的标准或格式?

PS:我们有一些遗留代码,由于列的数量和大小,我们在创建新表时用尽了表行大小限制。因此,我们将它们动态分割为n个表,并将它们连接到一个与前一个表同名的视图中,以确保我们不必进行大量的代码更改。

但视图的案例问题是破坏事物。任何帮助将不胜感激。

0 个答案:

没有答案