[ASP] wildcards in database gebruiken i.p.v. andersom

Pagina: 1
Acties:
  • 543 views sinds 30-01-2008
  • Reageer

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
Ik ben bezig met het opzetten van een User Agent Database.
Hierin moeten dus allerlei User Agents strings komen die weer gelinkt worden met een browser type+versie en besturingssysteem.

Echter is het nu zo dat ik de User Agents strings van een andere source heb die met wildcards werkt, geheel logisch natuurlijk!

In de database komen dus records zoals bijv:
code:
1
2
record 1: [Mozilla/4.0 (compatible; MSIE 6.0*;*Windows NT 5.0*)*]
record 2: [Mozilla/4.0 (compatible; MSIE 6.0*;*Windows NT 5.1*)*]


Hierin staan de wildcards dus IN de database. Ik weet natuurlijk wel hoe het andersom werkt, dus met een wildcard SQL query werken, dus met LIKE.

Stel dat iemand op mijn site komt de User Agent string:
code:
1
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)


moet record 1 hier dus mee matchen, ik heb google al gebruikt maar de enige voorbeelden die ik tegenkom is met wildcards werken in de SQL query, maar hier moet het juist andersom.
Dat beteknt dus dat iemand met bijv. User Agent string:
code:
1
Mozilla/4.0 (compatible; MSIE 6.011; Windows NT 5.0)


ook met record 1 in de database word gelinkt.
We gaan uit van * en ? als wildcards, * voor een variabel aantal karakters en ? voor 1 karakter.
Welke methode in ASP moet ik hiervoor gebruiken? Wat zijn de mogelijkheden? En hoe dit te doen?

Zoeken op "sql wilcards" in GoT levert geen nuttige resultaten op.

Alvast _/-\o_

[ Voor 3% gewijzigd door Urk op 03-12-2004 14:32 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 19-05 13:45

gorgi_19

Kruimeltjes zijn weer op :9

Je kan het ook scheiden naar browser, OS, etc. :)

[ Voor 33% gewijzigd door gorgi_19 op 03-12-2004 14:33 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
gorgi_19 schreef op vrijdag 03 december 2004 @ 14:32:
Je kan het ook scheiden naar browser, OS, etc. :)
Kan je daar iets meer uitleg over geven please? Snap niet zo goed hoe je dat bedoelt.. :?
Hmmm...je bericht was alweer gewijzigd.

In de aangeleverde database kan ik niks splitsen.

Wellicht kan ik wel iets doen met de ASP Split() functie, maar of dat een goed resultaat zal opleveren?

[ Voor 29% gewijzigd door Urk op 03-12-2004 14:35 ]


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
Het probleem met Split() zou weer kunnen zijn dat:

code:
1
2
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.54  [en]
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)


Allebei weergeven dat het om IE 6.0 gaat, terwijl de eerste User Agent string met Opera 7.54 word gebruikt.
Dus als ik via ASP ga splitten op de ; dan zal bovenstaande nooit het goede resultaat geven denk ik, toch?? :?

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
Gebruik LIKE?
code:
1
2
3
SELECT *
FROM Tabel
WHERE "abc" LIKE Tabel.Veld

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:59

mulder

ik spuug op het trottoir

Urk schreef op vrijdag 03 december 2004 @ 14:37:
Het probleem met Split() zou weer kunnen zijn dat:

code:
1
2
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.54  [en]
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)


Allebei weergeven dat het om IE 6.0 gaat, terwijl de eerste User Agent string met Opera 7.54 word gebruikt.
Dus als ik via ASP ga splitten op de ; dan zal bovenstaande nooit het goede resultaat geven denk ik, toch?? :?
Je zou volgens mij met een regular expression wel moeten kunnen matchen.

oogjes open, snaveltjes dicht


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Zijn SQL wildcards niet "%" en "_" in plaats van "*" en "?" ?

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
_js_ schreef op vrijdag 03 december 2004 @ 15:53:
Gebruik LIKE?
code:
1
2
3
SELECT *
FROM Tabel
WHERE "abc" LIKE Tabel.Veld
Thanks!
Maar dit gaat denk ik ook niet werken met die asteriks/wildcards, als je bijv 2 wildcards in de User Agent in de database hebt staan, bijv:
code:
1
[Mozilla/4.0 (compatible; MSIE 6.0*;*Windows NT 5.1*.NET CLR*)*]


Dan zal deze bijv nooit matchen met:
code:
1
[Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR)]


Toch? :?

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
Don Facundo schreef op vrijdag 03 december 2004 @ 16:04:
[...]


Je zou volgens mij met een regular expression wel moeten kunnen matchen.
OK, maar hoe werken die regualar expressions? Daar heb ik helaas nog nooit mee gewerkt...
Zal ook even zoeken in m'n ASP boeken.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:59

mulder

ik spuug op het trottoir

Urk schreef op vrijdag 03 december 2004 @ 16:13:
[...]

OK, maar hoe werken die regualar expressions? Daar heb ik helaas nog nooit mee gewerkt...
Zal ook even zoeken in m'n ASP boeken.
Dat is iid een uitdaging, ben er ook nog niet handig mee, maar dit is een goede start: http://www.regexplib.com/

[ Voor 4% gewijzigd door mulder op 03-12-2004 16:17 ]

oogjes open, snaveltjes dicht


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
Thanks, er staat een heel hoofdstuk over Regular Expressions (RegExp object) in mijn Beginning Active Server Pages 3.0 boek van WROX.
Ik zal dit eens goed doorlezen, maar als ik zo in de inleiding kijk kan dit wel eens perfect zijn.

Het enige vreemde is dat de eerste reply in dit topic van gorgi_19 hij Regular Expressions ook al noemde, echter wijzigde hij toen zijn bericht en heeft dit weggehaald!

Waarom?

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
Urk schreef op vrijdag 03 december 2004 @ 16:12:
[...]

Thanks!
Maar dit gaat denk ik ook niet werken met die asteriks/wildcards, als je bijv 2 wildcards in de User Agent in de database hebt staan, bijv:
code:
1
[Mozilla/4.0 (compatible; MSIE 6.0*;*Windows NT 5.1*.NET CLR*)*]


Dan zal deze bijv nooit matchen met:
code:
1
[Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR)]


Toch? :?
Wie beslist hoe die database gevuld gaat worden? Jij toch zeker, zorg dat er % en _ in komen. Of je kunt Replace gebruiken en alle * en ? vervangen door respectievelijk % en _.

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
_js_ schreef op vrijdag 03 december 2004 @ 16:41:
[...]

Wie beslist hoe die database gevuld gaat worden? Jij toch zeker, zorg dat er % en _ in komen. Of je kunt Replace gebruiken en alle * en ? vervangen door respectievelijk % en _.
OK, ja dat kan ik ook nog proberen.
Is dit zowel in MS SQL hetzelfde als in Access? Dus kan je bij allebei % en _ gebruiken?

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
Ik krijg alleen bij de volgende query op een Access database de volgende foutmelding:
code:
1
SELECT * FROM useragents WHERE '[Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)]' LIKE useragents.UserAgent


Microsoft JET Database Engine error '80040e14'
Invalid pattern string
/preindex.asp, line 64

In de database staat deze waar hij mee zou moeten matchen:

[Mozilla/4.0 (compatible; MSIE 6.0%;%Windows NT 5.0%)%]

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:59

mulder

ik spuug op het trottoir

Het kan niet met LIKE, dat is precies andersom namelijk.

oogjes open, snaveltjes dicht


  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
Don Facundo schreef op vrijdag 03 december 2004 @ 17:49:
Het kan niet met LIKE, dat is precies andersom namelijk.
Hmmmm, toch?? Dan had ik in mijn first post toch gelijk!
Met LIKE kan het dus alleen andersom?

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 01:33
Het lukt mij nog niet om een goed resultaat te krijgen met Regular Expressions in ASP (RegExp object)

Kan wat ik wil wel echt met Regular Expressions?

In de Database staat bijv:
code:
1
[Mozilla/4.0 (compatible; MSIE 6.0*;*Windows NT 5.1*)*]


Dit moet dus matchen via een Regular Expression met de HTTP_USER_AGENT string, bij mij dus bijv:
code:
1
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)


Moet ik dan de string uit de database vervangen door een juist Regular Expression pattern? :? :?
Pagina: 1