Quotes in AsToDate

Zoals bekend kan met SqlWhere een zoekcriterium met behulp van de in search-condition beschreven syntaxes worden gedefiniererd. Een voorbeeld hiervan is SqlWhere(VeldA=VeldB). Deze conditie 'zoekt' alle rijen (records) waarvan de inhoud van de kolommen VeldA en VeldB exact gelijk zijn aan elkaar. Een voorwaarde is dat VeldA en VeldB van hetzelfde type zijn en dat de kolommen VeldA en VeldB bestaan. Stel nu dat VeldA en VeldB kolommen zijn van het stringtype zoals in SqlWhere(Adres=PostAdres). Met deze conditie worden dus alle rijen (records) gezocht waarvan de kolommen Adres en PostAdres exact dezelfde inhoud hebben. Stel dat er een bepaald adres moet worden gezocht b.v. 'postbus 10'. Indien wordt opgegeven SqlWhere(Adres=postbus 10) wordt de kolommen Adres en postbus doorzocht. Mocht de kolomnaam 'postbus' al bestaan dan wordt toch nog een fout gegenereerd vanwege die losse 10. Om een letterlijke waarde (string literal) op te geven dient gebruik gemaakt te worden quotes: SqlWhere(Adres='postbus 10'). Indien in de string literal zelf een quote voorkomt kan deze ge-escaped worden met een extra quote zoals in: SqlWhere(Onderwerp='Variëlle''s kleurboek'). De letterlijke string waarden zijn case gevoelig zodat andere rijen gevonden worden met: SqlWhere(Adres='Postbus 10'). De numerieke literals kunnen zonder quotes (') opgegeven worden zoals 12, 102.12, 192.76E23 etc.

De SQL syntaxis schrijft voor dat kolomnamen met een letter moeten beginnen en gevolgd kunnen worden door 0 of meer cijfers, letters en _. Indien hieraan niet wordt voldaan kan de kolomnaan tussen back-quotes (`) gezet worden zoals in: SqlWhere(`Voorna(a)m(en)` = Naam) of SqlWhere(`Voorna(a)m(en)` = 'Variëlle') of SqlWhere(`Voorna(a)m(en)` LIKE 'b?e%') dus `Voorna(a)m(en)` LIKE 'b?e%' is geheel SQL systaxis en heeft verder niets van doen met AsToDate. AsToDate geeft als het ware de tekst: `Voorna(a)m(en)` LIKE 'b?e%' letterlijk door aan de search-condition van de SQL opdracht. Wat nu als er gezocht moet worden naar kolommen waarin b.v. een ) in voorkomt zoals in: SqlWhere(Naam LIKE '%)%'). AsToDate vat dit op als SqlWhere(Naam LIKE '%) zodat: Naam LIKE '% wordt doorgegeven hetgeen SQL syntaxisfout oplevert. Dit kan weer opgelost worden met de AsToDate escape quote " zoals in SqlWhere("Naam LIKE '%)%'").

Voorbeelden:
SqlWhere(`Voorna(a)m(en)` = 'Variëlle')
Vergelijkt kolom: Voorna(a)m(en) met de waarde: Variëlle

SqlWhere(`Voorna(a)m(en)` = Variëlle) en SqlWhere(`Voorna(a)m(en)` = `Variëlle`)
Vergelijkt kolom: Voorna(a)m(en) met de kolom: Variëlle

SqlWhere('Voorna(a)m(en)' = Variëlle) en SqlWhere('Voorna(a)m(en)' = `Variëlle`)
Vergelijkt de kolom: Variëlle met de waarde: Voorna(a)m(en)

SqlWhere('Voorna(a)m(en)' = 'Variëlle')
Vergelijkt waarde: Voorna(a)m(en) met de waarde: Variëlle. Dit is dus altijd onwaar (vindt altijd 0 rijen) maar levert verder geen SQL fout op!

Samenvatting:
Kolomnamen met speciale karakters tussen: `
(zowel in SQLSelect als SQLWhere).

Letterlijke stringwaarden tussen: '

Letterlijke AsToDate strings tussen: "