Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[c#] Sqlite select op waarde met spatie werkt niet

Pagina: 1
Acties:

Vraag


  • skate master
  • Registratie: september 2004
  • Laatst online: 21:58

skate master

Autodesk Educator Expert

Topicstarter
Ik heb een voor mij vreemde uitdaging met een Sqlite query waar ik even niet uitkom.
Via google ook niet een oplossing gevonden of ik heb niet de juiste zoekopdracht gebruikt.

Het probleem
Ik heb in c# een programma gemaakt welke een Sqlite database bevraagd naar informatie over de Nederlandse verkeersborden.
Zolang het bord waarop gezocht wordt geen spatie bevat werkt het prima echter zodra er een spatie in staat komt er geen resultaat meer naar voren.

voorbeeld
Onderstaand voorbeeld zoekt op B06 en levert netjes 1 resultaat op zoals verwacht.
SQL:
1
SELECT * FROM borden WHERE naam = 'B06'

Pas ik de query aan om te zoeken op ONDERBORD OB06 dan wordt er niets gevonden.
SQL:
1
SELECT * FROM borden WHERE naam = 'ONDERBORD OB06'

Nu kan ik de query aanpassen door de = te vervangen voor LIKE % %
SQL:
1
SELECT * FROM borden WHERE naam LIKE '%ONDERBORD OB06%'

Hiermee krijg ik wel netjes 1 resultaat voor het bord ONDERBORD OB06 echter als ik dan weer ga zoeken op OB06 dan krijg ik meer dan 1 resultaat omdat de zoekterm OB06 in meerdere borden voorkomt.

oplossing
Wat mis ik nu waardoor mijn select query niet werkt zodra het veld een spatie bevat?

Beste antwoord (via skate master op 08-03-2021 16:34)


  • remco_k
  • Registratie: april 2002
  • Laatst online: 23:24

remco_k

een cassettebandje was genoeg

Er staat in je db in het naam veld waarschijnlijk niet 'ONDERBORD OB06' maar nog één of meer karakters (al dan niet leesbaar) ervoor of erna. B.v. ' ONDERBORD OB06' of 'ONDERBORD OB06 '.
In deze situatie krijg je het gedrag wat je beschrijft en dat gedrag is in dat geval correct.

[Voor 3% gewijzigd door remco_k op 08-03-2021 16:08]

Alles kan stuk.
Goedkoop SHOUTcast stream hosting? Snel online, geen setup kosten. www.digiplay.nl

Alle reacties


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

  • remco_k
  • Registratie: april 2002
  • Laatst online: 23:24

remco_k

een cassettebandje was genoeg

Er staat in je db in het naam veld waarschijnlijk niet 'ONDERBORD OB06' maar nog één of meer karakters (al dan niet leesbaar) ervoor of erna. B.v. ' ONDERBORD OB06' of 'ONDERBORD OB06 '.
In deze situatie krijg je het gedrag wat je beschrijft en dat gedrag is in dat geval correct.

[Voor 3% gewijzigd door remco_k op 08-03-2021 16:08]

Alles kan stuk.
Goedkoop SHOUTcast stream hosting? Snel online, geen setup kosten. www.digiplay.nl


  • CurlyMo
  • Registratie: februari 2011
  • Laatst online: 23:20

CurlyMo

www.pilight.org

Wat @remco_k inderdaad zegt. In dit soort gevallen is het zinvol om eens letterlijk de tekst uit de kolom te plakken in bijv. notepad. Als je daar geen rare dingen in ziet, dan kan je de inhoud van de kolom eens in hex waardes exporteren. Dan zie je ook makkelijker waar de rariteiten zitten.

geen vragen via PM die ook op het forum gesteld kunnen worden.


Acties:
  • +1Henk 'm!

  • skate master
  • Registratie: september 2004
  • Laatst online: 21:58

skate master

Autodesk Educator Expert

Topicstarter
@remco_k het was inderdaad een spatie welke of voor of achteraan het veld stond.
Best logisch dat er dan niets gevonden wordt. Stom dat ik dit niet zelf heb bedacht.

Bedankt voor het meedenken.

  • RobIII
  • Registratie: december 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Wat @remco_k en @CurlyMo zeggen. Je zegt 't zelf eigenlijk al:

WHERE naam = 'ONDERBORD OB06' werkt niet
WHERE naam LIKE '%ONDERBORD OB06%' werkt wel

Wat is 't wezenlijke verschil? De tweede negeert alles voor/na je zoekstring. Dus daar moet "rommel" staan.

Edit: En inmiddels dus zelf ook achter gekomen :P Which makes me /spuit 11 :+

Om dan toch nog iets zinnigs te zeggen (pas wel even op, niet "blind" toepassen): wat je zou kunnen doen is iets als: update borden set naam = trim(naam) o.i.d. om even alle naam velden te ontdoen van rommel.

[Voor 40% gewijzigd door RobIII op 08-03-2021 16:44]

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

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Ben(V)
  • Registratie: december 2013
  • Laatst online: 19:13
Bedenk ook eens waar je de data vandaan haalt.
Het kan zomaar zijn dat het utf-8 data is en dan kunnen er van allerlei dingen inzitten buiten de standaard ascii codes en of die "zichtbaar" zijn is afhankelijk van de tool waarmee je kijkt.

Er zijn in utf-8 nog een heleboel ander whitespace coderingen.
Zoals deze:
U+0009 character tabulation
U+000A line feed
U+000B line tabulation
U+000C form feed
U+000D carriage return
U+0020 space
U+0085 next line
U+00A0 no-break space
U+1680 ogham space mark
U+180E mongolian vowel separator
U+2000 en quad
U+2001 em quad
U+2002 en space
U+2003 em space
U+2004 three-per-em space
U+2005 four-per-em space
U+2006 six-per-em space
U+2007 figure space
U+2008 punctuation space
U+2009 thin space
U+200A hair space
U+200B zero width space
U+200C zero width non-joiner
U+200D zero width joiner
U+2028 line separator
U+2029 paragraph separator
U+202F narrow no-break space
U+205F medium mathematical space
U+2060 word joiner
U+3000 ideographic space
U+FEFF zero width non-breaking space

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.

Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True