/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL - ENUM
Fra : Jimmy


Dato : 26-03-03 16:12

Hej

Jeg ønsker at sortere et ENUM-felt på dets indeks og ikke alfabetisk
sortering baseret på indholdet af feltet.


Har jeg nogle muligheder?

--
Mvh
Jimmy



 
 
Morten Wulff (26-03-2003)
Kommentar
Fra : Morten Wulff


Dato : 26-03-03 17:14

On Wed, 26 Mar 2003 16:12:03 +0100, Jimmy
<nyhedsgruppe@get3_erstat_3_med_2_net.dk> wrote:

> Jeg ønsker at sortere et ENUM-felt på dets indeks og ikke alfabetisk
> sortering baseret på indholdet af feltet.

Er det ikke standard-adfærd for MySQL? Iflg. manualen:

"ENUM values are sorted according to the order in which the enumeration
members were listed in the column specification. (In other words, ENUM
values are sorted according to their index numbers.)"


/wulff

--
Self Injury Information and Support: www.psyke.org

"Let's say the docs present a simplified view of reality..." Larry Wall

Jimmy (26-03-2003)
Kommentar
Fra : Jimmy


Dato : 26-03-03 17:22


"Morten Wulff" <wulff@ratatosk.net> wrote in message
newsrmngo90b3cya22@sunsite.dk...
> On Wed, 26 Mar 2003 16:12:03 +0100, Jimmy
> <nyhedsgruppe@get3_erstat_3_med_2_net.dk> wrote:
>
> > Jeg ønsker at sortere et ENUM-felt på dets indeks og ikke alfabetisk
> > sortering baseret på indholdet af feltet.
>
> Er det ikke standard-adfærd for MySQL?

Hmm - da jeg testede det forekom det mig, at de blev sorteret på værdien af
indekset.


> "ENUM values are sorted according to the order in which the enumeration
> members were listed in the column specification. (In other words, ENUM
> values are sorted according to their index numbers.)"

Det tyder jo på at de sorteres efter indeks.
Jeg må teste igen.

Tak for svaret.

Tillægsspørgsmål:
Kan man ændre indeksnumrene på en allerede eksisterende ENUM med data i?

Man kan slette den og oprette den igen og fylde data i igen, men det er nok
ikke den "rigtige" løsning
..


Mvh
Jimmy



Peter Brodersen (26-03-2003)
Kommentar
Fra : Peter Brodersen


Dato : 26-03-03 21:56

On Wed, 26 Mar 2003 17:22:29 +0100, "Jimmy"
<nyhedsgruppe@get3_erstat_3_med_2_net.dk> wrote:

>Kan man ændre indeksnumrene på en allerede eksisterende ENUM med data i?
>
>Man kan slette den og oprette den igen og fylde data i igen, men det er nok
>ikke den "rigtige" løsning

Jeg mindes, at da jeg på et tidspunkt ALTER'ede et enum-felt i en
tabel med en anden rækkefølge, så flyttede de værdier, hvor det samme
enum-navn optrådte i den gamle og i den nye definition, blot plads til
det nye index.

Det var dog et eller andet sted en noget overraskende opførsel (at
data ændrer værdier, hvis man meget nøgternt blot betragter
enum-felter som en anden præsentation af en tinyint), men det er nok
det, som man oftest ønsker, hvis man ændrer et enum-felt.

--
- Peter Brodersen

Peter Brodersen (26-03-2003)
Kommentar
Fra : Peter Brodersen


Dato : 26-03-03 23:19

On Wed, 26 Mar 2003 21:56:19 +0100, Peter Brodersen <usenet@ter.dk>
wrote:

>Jeg mindes, at da jeg på et tidspunkt ALTER'ede et enum-felt i en
>tabel med en anden rækkefølge, så flyttede de værdier, hvor det samme
>enum-navn optrådte i den gamle og i den nye definition, blot plads til
>det nye index.

Eksempel på en tabel med et ENUM-felt, hvor jeg undervejs ændrer
feltet med nye værdier, og de gamle på andre pladser:

CREATE FOO foo (animal ENUM('cow','horse','cat'));

INSERT INTO foo (animal) VALUES ('cow');

INSERT INTO foo (animal) VALUES ('horse');

SELECT animal, animal+0 FROM foo;

+--------+----------+
| animal | animal+0 |
+--------+----------+
| cow | 1 |
| horse | 2 |
+--------+----------+
2 rows in set (0.00 sec)

ALTER TABLE foo CHANGE animal animal
ENUM('penguin','cat','dog','horse','cow');

SELECT animal, animal+0 FROM foo;

+--------+----------+
| animal | animal+0 |
+--------+----------+
| cow | 5 |
| horse | 4 |
+--------+----------+
2 rows in set (0.01 sec)

--
- Peter Brodersen

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste