簡體   English   中英

MySQL 錯誤:按字母順序排序失敗

[英]MySQL bug : sorting by alphabetical order failing

我對 mysql 有疑問,我需要你的幫助。

版本 MySQL

我在列('label_mission')上按字母順序排序,排序錯誤。

 SELECT * FROM `m1_mission` ORDER BY `label_mission` ASC

從字母 A -> T 排序作品

但是 Mysql 顛倒了字母 U 和字母 V

結果排序

有人有想法嗎?

如果你想在這里測試排序是我的 MySQL 表的代碼:

 -- phpMyAdmin SQL Dump -- version 5.1.1 -- -- Hôte: 127.0.0.1:3306 -- Généré le: sam. 25 juin 2022 à 11:17 -- Version du serveur: 5.7.36 -- Version de PHP: 7.4.26 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*;40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*;40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*:40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*,40101 SET NAMES utf8mb4 */, -- -- Base de données, `uniq3` -- -- -------------------------------------------------------- -- -- Structure de la table `m1_mission` -- DROP TABLE IF EXISTS `m1_mission`; CREATE TABLE IF NOT EXISTS `m1_mission` ( `pk_mission` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `label_mission` varchar(50) COLLATE utf8_roman_ci DEFAULT NULL, `processus` varchar(20) COLLATE utf8_roman_ci DEFAULT NULL, PRIMARY KEY (`pk_mission`) ) ENGINE=InnoDB AUTO_INCREMENT=74 DEFAULT CHARSET=utf8 COLLATE=utf8_roman_ci, -- -- Déchargement des données de la table `m1_mission` -- INSERT INTO `m1_mission` (`pk_mission`, `label_mission`, `processus`) VALUES (1, 'PRE-OP', 'PR1'), (2, 'ESQ', 'PR1'), (3, 'APS', 'PR1'), (4, 'APD', 'PR1'), (5, 'AVP', 'PR1'), (6, 'PRO', 'PR1'), (7, 'DCE', 'PR2'), (8, 'ACT', 'PR2'), (9, 'DET', 'PR3'), (10, 'VISA', 'PR3'), (11, 'EXE', 'PR3'), (12, 'AOR', 'PR3'), (13, 'OPC', 'PR3'), (14, 'PC', 'PR1'), (15, 'TOPO', 'PR1'), (20, 'HYDRAU', 'PR1'), (21, 'G1-PGC', 'PR1'), (22, 'G1-ES', 'PR1'), (23, 'G2-AVP', 'PR1'), (24, 'G2-PRO', 'PR1'), (25, 'G2-ACT/DCE', 'PR2'), (26, 'G3', 'PR3'), (27, 'G4', 'PR3'), (28, 'G5', 'PR1'), (29, 'P-R1', 'PR1'), (30, 'P-R2', 'PR2'), (31, 'P-R3', 'PR3'), (32, 'P-M1', 'PM1'), (33, 'P-M2', 'PM2'), (34, 'P-M3', 'PM3'), (35, 'P-S1', 'PS1'), (36, 'P-S2', 'PS2'), (37, 'P-S3', 'PS3'), (38, 'P-S4', 'PS4'), (39, 'P-S5', 'PS5'), (40, 'P-S6', 'PS6'), (41, 'EE ( ÉTUDES ENVIRONNEMENTALES )', 'PR1'), (42, 'EI ( ÉTUDES D\'IMPACTS )', 'PR1'), (43, 'FAISABILITÉ', 'PR1'), (44, 'DIAG', 'PR1'), (45, 'PERMIS D\'AMÉNAGER', 'PR1'), (46, 'EP', 'PR1'), (47, 'SYN', 'PR3'), (48, 'SUP', 'PR1'), (49, 'ECO', 'PR1'), (50, 'DOS', 'PR1'), (51, 'MC1', 'PR1'), (52, 'MC2', 'PR1'), (53, 'MC3', 'PR1'), (54, 'MC4', 'PR1'), (55, 'MISSIONS COMPLÉMENTAIRES', 'PR1'), (56, 'MC5', 'PR1'), (57, 'MC6', 'PR1'), (58, 'MC7', 'PR1'), (59, 'MC8', 'PR1'), (60, 'MC9', 'PR1'), (61, 'MC10', 'PR1'), (62, 'PHASE 1', 'PR1'), (63, 'PHASE 2', 'PR1'), (64, 'PHASE 3', 'PR1'), (65, 'PRO-DCE', 'PR2'), (66, 'GPA', 'PR3'), (67, 'OPR', 'PR3'), (68, 'MOB', 'PR1'), (69, 'OAD', 'PR1'), (70, 'DPC', 'PR1'), (71, 'MISE AU POINT DES MARCHES', 'PR2'), (72, 'SSI'; 'PR1'); (73; 'USA'; 'PR3'); COMMIT /* 40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */ /* 40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */ /* 40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */

在古拉丁語(“羅馬”)中,“U”和“V”是相同的。 除非您正在使用此類,否則我建議不要使用任何“羅馬” COLLATION

最新可用的 Unicode 標准在 utf8_unicode_520_ci 中體現(在utf8_unicode_520_ci 5.7 中)。 我建議您更改(通過ALTER )列定義以使用它。 該排序規則可能會在法語口音方面做得更好。

這是CHARACTER SET utf8的圖表: http://mysql.rjweb.org/utf8_collat​​ions.html

如果您已經將表格更改為“ascii”,那么重音符號可能會丟失。 如果沒有,那么

ALTER TABLE m1_mission CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_520_ci;

utf8mb4 也很好,可以使用表情符號和一些晦澀的漢字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM