Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

MySQL REGEXP probleem

Pagina: 1
Acties:

  • djmenkveld
  • Registratie: Augustus 2005
  • Laatst online: 05-03-2016
In mijn database wil ik een SQL Query die bepaalde strings eruit haalt. Voorbeeld:

Strings:
xyz abc
xyz def
xyz ghi

Doel:
Match alles beginnend met xyz behalve def.

Oplossing:
REGEXP '^xyz [^[[:<:]]def[[:>:]]]'

Maar dit werkt niet, iemand een alternatief?

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Die [^.....] gaat alleen op voor een karakter, en dan moet er ook nog een karakter zijn. MySQL mist wat regexp-operators om dat wel te kunnen volgens mij, en daarnaast is het waarschijnlijk trager. Ik zou like 'xyz%' gebuiken zodat indexen werken, en daarna het bijzondere geval def afhandelen (and not ...)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 16:16

BCC

Of ze op applicatie niveau eruit ketsen. Maar dan ligt het even aan je data en app of dat handig/efficient is.
De oplossing van Pedorus is het mooiste denk ik.

[ Voor 18% gewijzigd door BCC op 29-10-2008 12:10 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik zou hier eerder LIKE gebruiken dan een regular expression inderdaad. Ten eerste omdat regexp support in MySQL niet geweldig is, en ten tweede omdat het met een "normale" query allemaal wat sneller zou moeten gaan.
SQL:
1
WHERE kolom LIKE 'xyz%' AND kolom NOT LIKE '%def'

Deze doet in dit specifieke geval precies wat je vraagt. Nadeel is wel dat een LIKE met een wildcard vooraan voor zover ik weet geen gebruik kan maken van indexen en je query dus relatief traag is, maar dat zou je met regexps ook hebben. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 16:16

BCC

Juist, daarom mij opmerkingen over op appniveau het oplossen. Geen index hitten is meestal een stuk trager dan wat resultaten filteren :).

[ Voor 38% gewijzigd door BCC op 29-10-2008 12:15 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
NMe's query kan best voor xyz% een index goed gebruiken hoor... Zelfs met mysql lukt je dat. ;)

{signature}


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Voor %def gebruikt hij vervolgens toch geen index meer? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
So what, zo lang de xyz% de resultset maar lekker efficient filtert.

{signature}


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dat hangt er natuurlijk vanaf hoe groot die resultset is dan. :Y)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Nog even en dit wordt een gerelateerd draadje :)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • djmenkveld
  • Registratie: Augustus 2005
  • Laatst online: 05-03-2016
Aan allen,

Bedankt voor de reacties, we hebben een work-around gemaakt!

Over de REGEXP heb ik nog een REGEXP gegooid die def eruit filtert.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom sla je nou alsnog alle adviezen over het niet gebruiken van REGEXP in de wind?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1