Toon posts:

MS Access, gebruik van LIKE in query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Simpele Access 2000 database met met leden informatie, in de tabel 'leden' zijn een tweetal velden 'tTelefoon1' en 'tTelefoon2' genaamd. Het type van deze velden is 'text'.

Graag wil ik alle 06 nummers van de leden selecteren, ter illustratie voer ik dit alleen uit op het veld 'tTelefoon2', mijn query:

SELECT tTelefoon1, tTelefoon2 FROM Leden WHERE tTelefoon2 Like '06%';

Dit levert echter een lege recordset op (er staan wel 06 nummers in veld tTelefoon2 in de orginele recordset ;) ). Er moet dus iets fout gaan met het gebruikte Like predicaat maar ik kan nergens vinden wat!

Wie heeft er ervaring met het Like statement in Access ?

  • rb338
  • Registratie: Januari 2001
  • Laatst online: 04-03 19:38
Doet je query 't wel zonder de LIKE?

Verwijderd

Topicstarter
ja, SELECT tTelefoon1, tTelefoon2 FROM Leden WHERE tTelefoon2 = '0612345678' werkt prima.

Verwijderd

Je moet met * en " werken.

Dus dan wordt het

SELECT tTelefoon1, tTelefoon2 FROM Leden WHERE tTelefoon2 Like "06*";

edit: Het kan ook met enkel quotje

[ Voor 21% gewijzigd door Verwijderd op 06-04-2005 10:41 ]


Verwijderd

Wat iemandanders zegt werkt ook maar dan krijg je ook nummers als 0406982342 enz. dus alle nummers waar 06 in voorkomt.

Probeer het eens met:
SELECT tTelefoon1, tTelefoon2 FROM Leden WHERE tTelefoon2 Like '06*'

[ Voor 58% gewijzigd door Verwijderd op 06-04-2005 10:42 ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Kijk nog eens goed naar de wildcards die je in een Access in een query mag gebruiken...

De dubbele quotes moeten niet perse: Access vindt de enkele quotes ook goed.

[ Voor 53% gewijzigd door OZ-Gump op 06-04-2005 10:42 ]

My personal website


Verwijderd

Topicstarter
Heren, mijn dank is wederom groot... loopt als een hele niewe!

Bedankt voor de SUPER snelle reacties

  • Ecto2002
  • Registratie: Juni 2002
  • Laatst online: 07-05 16:22
De ervaring die ik heb met LIKE, is dat het niet echt performant is. Als je toch in het begin van een tekstveld wil gaan zoeken, zou ik eerder kiezen voor de functie LEFT :

SELECT tTelefoon1, tTelefoon2 FROM Leden WHERE LEFT(tTelefoon2, 2) = '06';

@iemandanders : het gebruik van enkel of dubbel quotes speelt geen rol in queries. % is inderdaad geen wildcard karakter, * ? en # wel.

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Ecto2002 schreef op woensdag 06 april 2005 @ 10:44:
De ervaring die ik heb met LIKE, is dat het niet echt performant is. Als je toch in het begin van een tekstveld wil gaan zoeken, zou ik eerder kiezen voor de functie LEFT :

SELECT tTelefoon1, tTelefoon2 FROM Leden WHERE LEFT(tTelefoon2, 2) = '06';
*eensch is*
Good one Ecto2002

My personal website


Verwijderd

Topicstarter
inderdaag goed punt, echter database heeft slechts 2200 records en deze actie gaan maandelijks plaatsvinden (SMS mailing)... dus performance is voor mij geen issue.. maar ik ga elegantie niet uit de weg dus de LEFT statement is vanaf heden in gebruik :)

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Misschien moet je er rekening mee houden dat 06 nummers ook ingevoerd kunnen worden als +316xxxxxxxx. Tenzij je natuurlijk zelf de invoer in de database via een applicatie volledig in de hand hebt en zeker weet dat dit niet voor kan komen.
Spaties nog even buiten beschouwing gelaten ;)

My personal website


Verwijderd

Topicstarter
Telnummers komen uit (zelf geschreven) ledenpakket... 10 nummers fixed :)
Gaat helemaal goedkomen...(sterker nog: het is al verzonden :P)
Pagina: 1