sql >> Databáze >  >> RDS >> Mysql

jaké jsou změny v případě sady řádků výsledku mysql 8?

MySQL 8.0 změnila implementaci některých pohledů v INFORMATION_SCHEMA:

https://mysqlserverteam.com/mysql-8-0-improvements- to-information_schema/ říká:

Dělá se to z dobrých důvodů, ale chápu, že to narušilo některé vaše dotazy, když načítáte výsledky v asociativních polích na základě názvu sloupce.

Můžete vidět, že definice pohledu deklaruje název sloupce explicitně velkými písmeny:

mysql 8.0.14> SHOW CREATE VIEW CHARACTER_SETS\G
*************************** 1. row ***************************
                View: CHARACTER_SETS
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`mysql.infoschema`@`localhost` SQL SECURITY DEFINER VIEW `CHARACTER_SETS` AS 
  select 
    `cs`.`name` AS `CHARACTER_SET_NAME`,
    `col`.`name` AS `DEFAULT_COLLATE_NAME`,
    `cs`.`comment` AS `DESCRIPTION`,
    `cs`.`mb_max_length` AS `MAXLEN` -- delimited column explicitly uppercase
  from (`mysql`.`character_sets` `cs` 
  join `mysql`.`collations` `col` on((`cs`.`default_collation_id` = `col`.`id`)))

character_set_client: utf8
collation_connection: utf8_general_ci

Změnu můžete obejít několika způsoby:

Při dotazu na zobrazení můžete deklarovat své vlastní aliasy sloupců v případě, že chcete:

mysql 8.0.14> SELECT MAXLEN AS `maxlen` 
  FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| maxlen |
+--------+
|      2 |
|      1 |
+--------+

Před verzí 8.0 byste mohli začít dotazovat sloupce velkými písmeny. Zde je test ukazující výsledky v mém karanténě 5.7:

mysql 5.7.24> SELECT MAXLEN 
  FROM `information_schema`.`CHARACTER_SETS` LIMIT 2;
+--------+
| MAXLEN |
+--------+
|      2 |
|      1 |
+--------+

Nebo můžete načíst výsledky do neasociativního pole a odkazovat na sloupce podle čísla sloupce, nikoli podle názvu.



  1. 12c Adaptivní plány

  2. převést sériové číslo Excel Date na běžné datum

  3. Maximální počet záznamů v tabulce databáze MySQL

  4. Převeďte název měsíce na číslo měsíce v SQL Server