Avatar billede pomfrit Nybegynder
20. maj 2003 - 10:21 Der er 9 kommentarer og
1 løsning

+ i like

Hvordan får man

SELECT * FROM Kunder WHERE Fornavn+EfterNavn LIKE '%Jensen%'

til at virke i MySQL.

SELECT * FROM Kunder WHERE Fornavn LIKE '%Jensen%' OR Efternavn LIKE '%Jensen%

virker fint. Men det er ikke det jeg vil.
Avatar billede lauer Nybegynder
20. maj 2003 - 10:24 #1
Hvorfor er det ikke det du vil? (det sidste)

De 2 sætninger svarer da til hinanden, bortset fra den første ikke kan lade sig gøre.
Avatar billede erikjacobsen Ekspert
20. maj 2003 - 10:26 #2
SELECT * FROM Kunder WHERE concat(Fornavn,EfterNavn) LIKE '%Jensen%'
Avatar billede fsconsult.dk Nybegynder
20. maj 2003 - 10:31 #3
erikjacobsen's forslag burde opfylde dit ønske, men jeg forstår ikke helt baggrunden for det.

Ved at lave et sammensat felt som MySQL skal søge på, ødelægger du samtidig MySQL mulighed for at udnytte et evt. index på din tabel.
Avatar billede erikjacobsen Ekspert
20. maj 2003 - 10:33 #4
Det er ødelagt så snart en LIKE starter med %
Avatar billede fsconsult.dk Nybegynder
20. maj 2003 - 10:37 #5
Ikke helt, kun næsten. MySQL kan stadig lave en index-scan fremfor en table-scan (det kan andre databaser ihvertfald)
Avatar billede erikjacobsen Ekspert
20. maj 2003 - 10:45 #6
Ja, ok, men det er et lineært gennemløb, ikke et opslag. Det er det jeg mener
med "ødelagt" *g*
Avatar billede fsconsult.dk Nybegynder
20. maj 2003 - 10:51 #7
Enig, det meste af performance er væk, men det kan stadigvæk være hurtigere at scanne et index med få felter, end at lave en komplet table scan ...

Men enig, man skal ikke starte en LIKE med % hvis man kan undgå det.
Avatar billede pomfrit Nybegynder
21. maj 2003 - 07:56 #8
Det var li'e en hurtig løsning jeg skulle lave.
Det er til en søgning på personer. En bruger indtaster "Hanne Louise Knudsen"
og ønsker at søge på dette. Da mellemnavnet kan stå både i fornavn og efternavn feltet, udskifter jeg mellemrum med "%" og kører sql'en.
Det blev først lavet til MSSQL og her virker Fornavn+EfterNavn. Så skulle det laves til MySQL og her blev Fornavn+EfterNavn ikke fattet.
Avatar billede pomfrit Nybegynder
21. maj 2003 - 07:58 #9
erikjacobsen laver du li'e et svar så du kan få alle dine mange points.
Avatar billede erikjacobsen Ekspert
21. maj 2003 - 08:25 #10
Okay da
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