Avatar billede eksperten1 Nybegynder
27. januar 2003 - 20:26 Der er 10 kommentarer og
1 løsning

LIKE MATCH whatever ??

I et felt "region" har jeg en række værdier "0 1 4 7"
Det er tal fra 0 til og med 10, tallene er adskilt af mellemrum. Hvordan kan jeg søge efter alle der indeholder 0 i regionen, men ikke 10 ??

mvh
Mark
Avatar billede di8leva Nybegynder
27. januar 2003 - 20:28 #1
pröv med:

select distinct * from <tabelnavn> where (region like '0' or region like '0 ' or region like ' 0' or region like ' 0 ') and region not like '%10%'
Avatar billede di8leva Nybegynder
27. januar 2003 - 20:30 #2
måske det er bedre performance hvis man taster:

select distinct * from <tabelnavn> where region not like '%10%' and (region like '0' or region like '0 ' or region like ' 0' or region like ' 0 ')
Avatar billede eksperten1 Nybegynder
27. januar 2003 - 20:38 #3
Hmm, det var en ordentlig omgang like's. Bliver det ikke lamgsomt. SKulle hellere ændre det sådan at de opbevares anderledes ?

|0|3|6|10| ?? region LIKE '|0|' ... region LIKE '|10|' ?? Ville det være hurtigere ?
Avatar billede websmith Nybegynder
27. januar 2003 - 20:42 #4
Hvis du fuldtekst indexerer feltet, så kan du bruge følgende query:

select distinct * from <tabel> where match('region') against ('0 not near 10' IN BOOLEAN MODE)

Det skulle gerne virke, men man ved jo aldrig, når man ikke har tabellen til at teste med :)
Avatar billede websmith Nybegynder
27. januar 2003 - 20:43 #5
eller
select osv. where region like '0%' and region not like '%10'
Avatar billede eksperten1 Nybegynder
27. januar 2003 - 20:46 #6
Ville det være en fordel at opdele regionerne anderledes. Det er til styring af hvilke regioner et firma hører til i en kundebase, jeg smider selv data ned i feltet, så jeg bestemmer selv hvordan de skal ligge.
Avatar billede websmith Nybegynder
27. januar 2003 - 20:55 #7
Det ville nok være mest optimalt med hver region i en record for sig selv, dvs.

Firma, region
xxx,0
xxx,1
xxx,2
xxx,3

osv.

For så skulle det være meget nemt at pille dem fra med region 0, men ikke 10 :)
Avatar billede di8leva Nybegynder
27. januar 2003 - 21:40 #8
nå, tänkte ikke riktig klart det =)
websmith har nok den smartaste lösning

select distinct * from <tabelnavn> where region like '%0%' and region not like '%10%'
Avatar billede eksperten1 Nybegynder
27. januar 2003 - 22:47 #9
>websmith. Det syntes jeg måske nok ville være lige lovligt mange der så skal oprettes. Bare tanken om at skulle vedligeholde dem. Måske jeg skulle lave 11 nye felter i tabellen region0, region1, ..., region10 og så fylde 0 eller 1 i dem hvis den pågældende region er aktiv for dette firma.
Avatar billede websmith Nybegynder
28. januar 2003 - 12:00 #10
Du har ret i at det måske er nemmere, men hvad nu hvis der engang kommer en ny region, så skal du til at kode om i din database. Hvis du gør som jeg skriver, så får du er meget mere struktureret layout på din database.

Det burde vel heller ikke være mere besværligt at indsætte dine regioner, da du så ville kunne gøre det med et loop et eller andet sted i din kode. Som det er nu, så skal du loope og oprette en streng som du indsætter i din database.
Avatar billede eksperten1 Nybegynder
02. februar 2003 - 18:00 #11
>websmith, jeg er bange for at du har ret. Jeg har lagt alle regioner og kategorier ud i en særskilt tabel som så relaterer på ID. smart og hurtigst.
Mange tak.
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