Avatar billede whatever Nybegynder
24. juni 2008 - 11:39 Der er 7 kommentarer og
1 løsning

MySQL henter forkerte rækker ud

Hej,

Jeg er løbet ind et problem med en query der henter for mange poster ud.

Min query er følgende:

SELECT id, title FROM table WHERE title = 'spån'

Det returnerer følgende to poster:

3243, span
3456, spån

Jeg kun interesseret i at få posten hvor title faktisk er spån, og ikke hvor det er span.

Benytter MySQL 5.0.37 og tabellerne benytter InnoDB og UTF-8.

Nogen der har en løsning på problemet?
Avatar billede pidgeot Nybegynder
24. juni 2008 - 11:43 #1
Hvad er din collation på feltet/tabellen?
Avatar billede whatever Nybegynder
24. juni 2008 - 11:47 #2
På både tabel og felt er den utf8_general_ci
Avatar billede pidgeot Nybegynder
24. juni 2008 - 11:49 #3
Og det er dit problem :)

Å betragtes som en alternativ udgave af A hvis din collation ikke dækker noget der bør have kendskab til Å, og den skelner derfor ikke mellem dem.

Skift collation til utf8_danish_ci, så funker det.
Avatar billede whatever Nybegynder
24. juni 2008 - 12:19 #4
Ok.... har lige testet det og kan godt se det løser problemet. Så det store spørgsmål:

På sigt skal sitet uder over engelsk og dansk muligvis også indeholde polske ting i samme tabel. Vil det ikke give problemer med det polske, hvis mine felter har benytter collation utf8_danish_ci?
Avatar billede whatever Nybegynder
24. juni 2008 - 12:48 #5
Jeg tilføjede "COLLATE utf8_danish_ci" i mine SELECT queries, hvilket løse problemet.

Smid et svar og ud får nogle point ;-)
Avatar billede pidgeot Nybegynder
24. juni 2008 - 12:55 #6
Ja og nej. Du kan uden problemer gemme tingene - collation påvirker kun sortering og sammenligning - men du vil sandsynligvis opleve samme problem som her; særlige polske tegn bliver behandlet ved sortering og sammenligning som om de var "grundtegnet". Jeg er ikke bekendt med en collation der bettragter både polske og danske tegns om individuelle - måske er utf8_bin, men den er også case-sensitive, hvilket normalt ikke er hensigtsmæssigt.

Det er i øvrigt muligt at overstyre collation for en specifik forespørgsel hvis det kun er enkeltscenarier du skal bruge en specifik sortering/sammenligning. Tag et kig på http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html.
Avatar billede pidgeot Nybegynder
24. juni 2008 - 12:56 #7
Værsgo :)

Hvis du har et primært sprog til dit indhold, er det bedst at bruge en matchende collation - så risikerer du ikke at "glemme den" i en query.
Avatar billede whatever Nybegynder
24. juni 2008 - 13:56 #8
Jeg fandt godt siden du referer til, og der var der jeg fandt løsning med COLLATE.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester