gpt4 book ai didi

mysql - 查询 View 时列名改变大小写

转载 作者:行者123 更新时间:2023-11-29 02:04:36 24 4
gpt4 key购买 nike

以下测试用例描述了我的问题。

CREATE TABLE the_table (id INT, Title CHAR(10));
CREATE VIEW the_view AS SELECT * FROM the_table;
INSERT INTO the_table VALUES (1, 'Hello');

注意大写的“标题”

现在当我尝试时:

SELECT id, title FROM the_table;

Result:
+------+-------+
| id | title |
+------+-------+
| 1 | Hello |
+------+-------+

(注意“title”在查询和结果列中是如何小写的)

但是,当我在 View 上做同样的事情时:

SELECT id, title FROM the_view;

Result:
+------+-------+
| id | Title |
+------+-------+
| 1 | Hello |
+------+-------+

还是同一个 select 子句,但这次 'Title' 的列名是大写的!

我试图重用具有完全相同架构 View 的代码,但这搞砸了。

无论这是否是标准的 MySQL 行为,我真的找不到任何引用,但有没有办法解决它?

最佳答案

如果我们查询 View 是如何存储的:

SHOW CREATE VIEW the_view

...我们找到一个包含这个的结果:

CREATE ALGORITHM=UNDEFINED DEFINER=`test`@`%` SQL SECURITY DEFINER VIEW `the_view` AS select `the_table`.`id` AS `id`,`the_table`.`Title` AS `Title` from `the_table`

如果将 * 替换为列列表,也会发生这种情况:MySQL 添加一个带有别名的 AS 子句,这有效地硬编码了列名。

结论是 View 不是表。您需要使用您要使用的确切案例来创建它。无论如何,大小写通常是无关紧要的,除非您的客户端语言在大小写更改时搞砸了(例如 PHP 关联数组)。

关于mysql - 查询 View 时列名改变大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8791617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com