Crozzfire Skrevet 21. april 2005 Del Skrevet 21. april 2005 Hei! Jeg sliter litt med å finne ut hvordan jeg finner det lengste navnet i et felt, dessuten telle opp hvor mange bokstaver det er. Har søkt lenge nå, men ikke funnet noe som funker :/ Lenke til kommentar
kaffenils Skrevet 21. april 2005 Del Skrevet 21. april 2005 Hei!Jeg sliter litt med å finne ut hvordan jeg finner det lengste navnet i et felt, dessuten telle opp hvor mange bokstaver det er. Har søkt lenge nå, men ikke funnet noe som funker :/ Noe slik? [/code]select Navn, len(Navn) from Ansatte where AnsattId = (select AnsattId from Ansatte order by len(Navn) desc limit 1) Lenke til kommentar
Crozzfire Skrevet 21. april 2005 Forfatter Del Skrevet 21. april 2005 (endret) Takk for forslaget, men det virker ikke. Den forstår tydeligvis ikke len() Endret 21. april 2005 av Crozzfire Lenke til kommentar
Torbjørn Skrevet 21. april 2005 Del Skrevet 21. april 2005 bruk length() evt. kan du sortere på length(Navn) DESC og ha med limit 1 Lenke til kommentar
Crozzfire Skrevet 21. april 2005 Forfatter Del Skrevet 21. april 2005 Takk! Det virket med length. Men har da et annet problem. Hva hvis det f.eks. er to navn som er like lange? Hvordan kommando skal man skrive inn for at det skal oppdages og skrive ut begge? Er det i det hele tatt mulig med bare SQL? Lenke til kommentar
kaffenils Skrevet 21. april 2005 Del Skrevet 21. april 2005 Takk! Det virket med length. Men har da et annet problem. Hva hvis det f.eks. er to navn som er like lange? Hvordan kommando skal man skrive inn for at det skal oppdages og skrive ut begge? Er det i det hele tatt mulig med bare SQL? SQL Server har et nøkkelord som heter WITH TIES, men jeg klarer ikke å se at MySQL har noe tilsvarende. Dessverre. Men du kan jo prøve denne: select * from Ansatte where length(Navn) = (select max(length(navn)) from Ansatte) Problemet med denne er at den sannsynligvis ikke benytter seg av evt. indexer og derfor kan bli veldig treg hvis du har store menger med data. Lenke til kommentar
Crozzfire Skrevet 21. april 2005 Forfatter Del Skrevet 21. april 2005 (endret) Jeg får syntax error på forslaget ditt. mysql> select * from Ansatte where length(Navn) = (select max(length(Navn)) from Ansatte); ERROR 1064: You have an error in your SQL syntax near 'select max(length(Navn)) from Ansatte)' at line 1 Endret 21. april 2005 av Crozzfire Lenke til kommentar
kaffenils Skrevet 21. april 2005 Del Skrevet 21. april 2005 (endret) Jeg har dessverre ikke itlgang til noen MySQL servere fra denne maskinen. Teste kun mot en MSSQL server, og det fungerte fint. Du kan prøve om denne fungerer: select * from Ansatte where length(Navn) = (select length(Navn) from Ansatte order by length(Navn) desc limit 1); Endret 21. april 2005 av kaffenils Lenke til kommentar
Torbjørn Skrevet 21. april 2005 Del Skrevet 21. april 2005 et kjedelig alternativ er å først hente ut maxlengde, select max(length(Name)) og deretter select * from tabell where length(Name)=detdufantiste Lenke til kommentar
kaffenils Skrevet 21. april 2005 Del Skrevet 21. april 2005 et kjedelig alternativ er å først hente ut maxlengde, select max(length(Name)) og deretter select * from tabell where length(Name)=detdufantiste Jeg foreslo faktisk å bruke max(length(Navn)) i en subquery, men han fikk visst en SQL Syntax Error uten at jeg skjønner hvorfor. Lenke til kommentar
Crozzfire Skrevet 21. april 2005 Forfatter Del Skrevet 21. april 2005 Det siste forslaget ditt virket heller ikke.. Rare greier. Lenke til kommentar
Torbjørn Skrevet 21. april 2005 Del Skrevet 21. april 2005 mitt forslag var å gjøre det i 2 queries Lenke til kommentar
Crozzfire Skrevet 21. april 2005 Forfatter Del Skrevet 21. april 2005 (endret) Ja, men det er for kjedelig, og uaktuelt Skal da være mulig å stuffe inn i én query Endret 21. april 2005 av Crozzfire Lenke til kommentar
kaffenils Skrevet 21. april 2005 Del Skrevet 21. april 2005 Ja, men det er for kjedelig, og uaktuelt Skal da være mulig å stuffe inn i én query Nå spør jeg dumt, men du har en tabell som heter Ansatte og en kolonne som heter Navn? Har du sjekket evt. skriveleifer. Lenke til kommentar
Crozzfire Skrevet 21. april 2005 Forfatter Del Skrevet 21. april 2005 Nei de heter ikke det. Har en tabell ved navn DEPT og kolonne DNAME. Bare byttet ut fra eksemplene. Ja, har sjekket for skriveleif.. Lenke til kommentar
kaffenils Skrevet 22. april 2005 Del Skrevet 22. april 2005 Nei de heter ikke det. Har en tabell ved navn DEPT og kolonne DNAME. Bare byttet ut fra eksemplene. Ja, har sjekket for skriveleif.. Ser SQL spørringen din slik ut da: select * from DEPT where length(DNAME) = (select length(DNAME) from DEPT order by length(DNAME) desc limit 1); Lenke til kommentar
mysjkin Skrevet 22. april 2005 Del Skrevet 22. april 2005 (endret) Nysgjerrig som jeg er måtte jeg se om det funka: mysql> select * from country where length(name) = (select length(name) from country order by length(name) desc limit 1); ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select length(name) from country order by length(name) desc lim (Har en tabell country med et felt name) Hvordan var det med støtte for subqueries i mysql? (Jeg har versjon 4.0.24 på debian) Funka etter hensikten i postgres, derimot... M. edit: rydda layout Endret 22. april 2005 av mysjkin Lenke til kommentar
Crozzfire Skrevet 23. april 2005 Forfatter Del Skrevet 23. april 2005 Ahem. Undersøkte litt - mySQL støtter ikke subselect (!). Forslag uten subselects? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå