Gå til innhold

[løst] Hjelp til utforming av en WHERE-clause


Anbefalte innlegg

Skrevet (endret)

Hei,

jeg står fast på utformingen av en spørring.

 

Eksempel:

 

La oss si jeg har en tabell med kolonnen 'identifier', som har disse radene:

'index/blabla'

'index/blabla/osv'

'index/tralla'

'index/trylle'

'index/trylle/noeannet'

 

Skal så hente ut alle rader som er etterkommere av feltverdien 'index', og skal da få dette resultatsettet:

'index/blabla'

'index/tralla'

'index/trylle'

 

men ikke:

'index/blabla/osv'

'index/trylle/noeannet'

 

altså jeg skal hente ut alle rader som har kun en '/' etter spørreverdien (i dette tilfellet 'index'. Kunne også vært 'index/blabla'.

 

Først lagde jeg denne;

WHERE Identifier LIKE '$parent/%'

men denne henter selvfølgelig ut alle rader som har '$parent/' i starten. Jeg må vel bruke noe REGEXP for å få løst mitt problem? har sett litt på http://dev.mysql.com/doc/refman/5.0/en/str...operator_regexp, men er ikke såpass god på regexp at jeg skjønner hvordan jeg løser problemet.

 

(bruker mysql 5)

 

Takker for alle innspill :)

Endret av MadMe
Videoannonse
Annonse
Skrevet (endret)

Hehe.. dette var en hard nøtt. Er ikke så drivende god på regex selv, men etter litt leting fant jeg denne:

 

SELECT * FROM tabell WHERE id REGEXP BINARY '^([^/]+\/[^/]+)$';

 

Tror denne skal fungere, den fungerte bra i min mysql base ihvertfall.

 

Her er noen gode referanser:

RegEx Tester

Regular Expression Library

Endret av KurtGandalf
Skrevet

Takker for svar :)

 

Men hvordan utformer jeg REGEXPEN når jeg skal hente du alle etterkommere av 'index/blabla' ? (altså i eksempelet: index/blabla/osv)

Har prøvd å sette index/blabla inn i REGEXPEN på forskjellig vis, uten resultat..

Skrevet

WHERE id LIKE 'index/%" AND id NOT LIKE 'index/%/%'

 

Regexp vil vel bli noe sånt som dette:

"index/[^/]*"

 

Ellers støtter jeg også en ordentlig hierkaisk oppbygging... :thumbup:

Skrevet (endret)
WHERE id LIKE 'index/%" AND id NOT LIKE 'index/%/%'

 

Funket! trodde '/' også ble definert av %, så tenkte ikke på den måten.

 

Takker

Endret av MadMe

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...