[PHP/MySQL] Zoeken met like en speciale tekens

Pagina: 1
Acties:

Onderwerpen

Vraag


  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 22:13

mkleinman

8kWp, WPB, ELGA 6

Topicstarter
Ik ben bezig met een hobbyproject waar in een MySQL database namen staan met speciale tekens zoals:

Beurré van den Ham, Marie Joseph d'Othée, Åkerö etc. In mijn zoekquery gebruik ik een LIKE: fbn.naam LIKE ? . Bij de inputparameters zet ik er een % voor en achter.

Dit geheel werkt an sich prima. Als ik zoek op "Beur" dan vind ik alle namen die daarmee beginnen. Echter als ik "Beurre" in typ ( dus zonder accent aigu ) dan wordt er niets gevonden. Wat logisch is aangezien Beurre != Beurré .

Ik heb SOUNDS en SOUNDEX geprobeerd. Dit werkt prima als je zoekt op de volledige naam waarbij Beurré van der Ham gelijk is aan Beurre van der Ham. Alleen werkt dit niet met het zoeken van delen in een string.

Nu zou ik in de tabel een extra veld kunnen maken die alle speciale tekens weg filtert en dan die kolom gebruiken in de LIKE maar dan is de eerste vraag hoe ik in PHP of MYSQL al die tekens weg kan filteren.

En ik hoop eigenlijk op een iets elegantere oplossing dan dit. Iemand een suggestie hoe ik dit in PHP of in de MySQL query kan oplossen?

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.

Beste antwoord (via mkleinman op 18-11-2021 18:29)


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je moet kijken naar je collation. Je wil een accent-insensitive collation gebruiken.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je moet kijken naar je collation. Je wil een accent-insensitive collation gebruiken.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 21:16

DataGhost

iPL dev

Dit is 100% afhankelijk van je doeltalen en namen maar niet onmogelijk. Collations zijn daarvoor bedoeld, die kan je op verschillende plekken inzetten, bijv. in de tabel of zelfs een kolom, of juist in de query, allemaal met hun eigen voor- en nadelen.

  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 22:13

mkleinman

8kWp, WPB, ELGA 6

Topicstarter
RobIII schreef op donderdag 18 november 2021 @ 18:08:
Je moet kijken naar je collation. Je wil een accent-insensitive collation gebruiken.
Dat was inderdaad de oplossing! Tnx!

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Nog een gratis negatief antwoord: SOUNDEX is bijna nooit de oplossing. Zelfs niet per se voor fonetische vraagstukken. ;)
Soundex voor filters is een beetje als rot13 bij encryptie: Standaard beschikbaar en het lijkt interessant voor beginners, maar leidt uiteindelijk enkel tot prutswerk.

{signature}