C'è un campo 'noticeBy' enum ('email', 'mobile', 'all', 'auto', 'nothing') NOT NULL DEFAULT 'auto'. Come noto, l'ordinamento da parte del campo ENUM è relativo al suo indice. Tuttavia, come è possibile fare ordine con i suoi valori?ORDINA DA "campo ENUM" in MYSQL
risposta
Come documentato in Sorting:
ENUM
i valori sono ordinati in base ai loro numeri di indice, che dipendono dall'ordine in cui i membri di enumerazione sono stati elencati nella specifica della colonna. Ad esempio,'b'
ordina prima di'a'
perENUM('b', 'a')
. La stringa vuota ordina le stringhe non vuote e i valoriNULL
vengono ordinati prima di tutti gli altri valori di enumerazione.Per evitare risultati imprevisti quando si utilizza la clausola
ORDER BY
su una colonnaENUM
, utilizzare una di queste tecniche:
specificare l'elenco
ENUM
in ordine alfabetico.Assicurarsi che la colonna sia ordinata in modo lessicale anziché per numero di indice tramite la codifica
ORDER BY CAST(col AS CHAR)
oORDER BY CONCAT(col)
.
Per il secondo punto, si può dunque sorta sulla colonna dopo che è stato cast in una stringa:
ORDER BY CAST(noticeBy AS CHAR)
È possibile definire l'ordine come preferisci:
ORDER BY CASE noticeBy
WHEN 'email' THEN 1
WHEN 'mobile' THEN 2
WHEN 'all' THEN 3
WHEN 'auto' THEN 4
ELSE 5
END
Ciò restituirà le righe nel seguente ordine: e-mail, cellulare, tutto, auto, niente.
Questo funziona anche:
ORDER BY FIELD(noticeBy, 'all','auto','email','mobile','nothing')
(non credo che ci sia un'impostazione per raggiungere questo obiettivo, è necessario fornire il tipo-valori.)
Questo modo di ordinare ENUM può essere molto utile in alcuni casi! Funziona davvero, l'ho provato :) –
perfetto esattamente quello che stavo cercando – Andrew
- 1. MySQL Enum vantaggio di prestazioni?
- 2. Mysql Seleziona valori enum
- 3. Java - Enum con campo array
- 4. MySQL enum con hibernate
- 5. MySQL enum vs. set
- 6. È brutto usare enum ('y', 'n') invece di un campo booleano in una tabella MySQL?
- 7. Ordina per CAMPO in MYSQL
- 8. massima (lunghezza (campo)) in mysql
- 9. Get enum da attributo enum
- 10. Hibernate, MySQL, Enum e NULL
- 11. enum Java a mysql enum nella dichiarazione preparata
- 12. Il campo di enum deve essere serializzabile?
- 13. valori Enum() Lunghezza vs campo privato
- 14. Convertire da enum ordinal a enum tipo
- 15. Selezione MySQL basata sui valori ENUM
- 16. Ricerca su un campo Enum con Riscatto
- 17. Rimozione valori enum dalla colonna mysql
- 18. Selezionare una parte da un campo MySQL Blob
- 19. query MySQL per estrarre la prima parola da un campo
- 20. MySQL ordine dal campo in Eloquente
- 21. come creare campo calcolato in mysql?
- 22. campo data trunc in mysql come oracle
- 23. MySQL Modifica una colonna valore ENUM
- 24. Memorizzazione di enum nel database MySQL
- 25. Ottieni un campo enum da una struttura: non posso spostarmi dal contenuto preso in prestito
- 26. MySQL come un altro campo
- 27. nome campo mysql dalla variabile
- 28. Enum in enum
- 29. Un enum in MySQL deve essere NOT NULL?
- 30. Impossibile generare il tipo enum in MySql dall'entità JPA
Questo funzionerà in SQLite troppo. – nuqqsa