Avatar billede steench Nybegynder
30. juli 2003 - 08:50 Der er 6 kommentarer og
1 løsning

Søgning med Wildcard

Hej

Jeg er ved at programmere en php søgefunktion der kan kaldes fra flere forskellige moduler. Den bliver kaldt med en række parametre (ca. 20) der angiver hvad der søges. F.eks. NummerFra, NummerTil. Jeg kan ikke regne med der er brug for alle søgekriterier hver gang.

I funktionen bygger jeg så sql-sætningen der forespørger i databasen.

For at gøre det let, så lyder mit spørgsmål : Kan man lave en select-sætning med et slags wildcard :
'select * from hold where Nummer >= * and Nummer <= *', hvor * angiver at alt skal returneres ?

Det vil nemlig gøre programmeringen nemmere.

på forhånd tak.
Avatar billede arne_v Ekspert
30. juli 2003 - 09:03 #1
SELECT * FROM hold

returnerere alle records !

Og d.v.s. at din applikation bare skal undlade at klistre noget på WHERE
betineglsen for tomme felter.
Avatar billede arne_v Ekspert
30. juli 2003 - 09:04 #2
Alternativt kan du naturligvis bare tage og sætte blank felt til største
og mindste værdier.

Hvis Nummer er positive hel tal mellem 0 og 1000 så:

WHERE Nummer >=0 AND Nummer <= 1000;
Avatar billede arne_v Ekspert
30. juli 2003 - 09:05 #3
Rigtigt wildcard i SQL er % og kan kun bruges til tekst.

WHERE navn = 'A%*

finder alle navne der starter med A.
Avatar billede steench Nybegynder
30. juli 2003 - 09:23 #4
Hej

Tak for dine svar, men det er ikke det jeg leder efter.
Du har ret i dit første svar at, det er det resultat jeg vil komme frem til. Jeg kan bare på forhånd ikke vide hvilke felter en kaldende funktion kalder med. Parameterne er både numeriske og alfanumeriske. Hvis der nu fandtes en slags 'giv mig alt' variabel, ville det være perfekt. Så skulle den kaldende funktion, bare indsætte den i de paramerte der ikke skal søges på.
Avatar billede arne_v Ekspert
30. juli 2003 - 09:54 #5
Den måde man normalt laver den slags på er at opbygge WHERE betingelsen
dynamisk og ikke appende noget, hvis feltet ikke er udfyldt.

Der er som sagt en wildcard for tekst felter, men ikke for tal felter.
Avatar billede arne_v Ekspert
30. juli 2003 - 09:54 #6
Det er iøvrigt:

WHERE navn LIKE 'A%*

ikke:

WHERE navn = 'A%*

sorry !
Avatar billede steench Nybegynder
30. juli 2003 - 10:01 #7
OK - Jeg kommer til at gøre det the hard way.

Tak for svarene.
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