14. april 2004 - 11:20Der er
8 kommentarer og 2 løsninger
flere parametre, or, like
Hej Jeg ønsker et SQL-statement, som udtager alle records hvor kolonnenavn er enten "peter", eller "line". Det kan nedenstående ved at jeg skriver OR mellem betingelserne. -------------------------------- SELECT * FROM tabel-navn WHERE kolonnenavn LIKE 'peter' OR kolonnenavn LIKE 'line' ------------------------------ Men jeg kunne godt tænke mig at udtrykke dette ved kun én betingelse, noget i den stil. ----------------------------- SELECT * FROM tabel-navn WHERE kolonnenavn LIKE 'peter OR line'
Kan dette lade sig gøre? Eller findes der en smartere løsning? (Jeg skal bruge det i en Stored Procedure, hvor jeg kun vil have et bestemt antal parametre, men hvor betingelsen kan være flere navne: peter, line, hans, kurt...)
Jeg har tidligere gjort det at jeg har lavet en forholdvis lang parameter, f.eks. en streng på varchar(8000). Det er så en komma separeret liste af navne, f.eks: 'Peter, Line, Kaj' Før min query, så løber jeg strengen igennem navn for navn og bygger en where clausul (via patindex, substring mv). Where clausulen bliver så på formen: where navn like 'peter' or navn like 'line' etc Derefter kan man dynamisk knalde sin query af.
Du kan også kræve at parameteren er selve where clausulen, så slipper du for at regne den ud.
Det bliver ikke hurtigere af at være dynamisk, men det er den eneste måde at gøre det på.
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.