Toon posts:

[MSSQL] Wildcard in stored procedure

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het halve internet afgezocht naar hoe je kan zoeken binnen velden via een stored procedure. Met het "%" gebeuren werkt het in QA prima, gooi ik het echter in mijn stored procedure: nix hoor.
Zo ziet de SP eruit (een beetje ingekort):

CREATE PROCEDURE Zoek @zoekterm varchar(50)
AS
SELECT * FROM Log WHERE Titel LIKE @zoekterm
GO

Deze roep ik aan met:

RS.Open "Zoek " & zoekterm, connectie

Ik krijg dus geen enkel resultaat, wat er ook gezocht wordt :'(

Iemand een id?

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS

code:
1
SELECT * FROM Log WHERE Titel LIKE '%' + @zoekterm + '%'

  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Verwijderd schreef op 22 September 2003 @ 23:09:
Ik heb het halve internet afgezocht naar hoe je kan zoeken binnen velden via een stored procedure. Met het "%" gebeuren werkt het in QA prima, gooi ik het echter in mijn stored procedure: nix hoor.
Zo ziet de SP eruit (een beetje ingekort):

CREATE PROCEDURE Zoek @zoekterm varchar(50)
AS
SELECT * FROM Log WHERE Titel LIKE @zoekterm
GO

Deze roep ik aan met:

RS.Open "Zoek " & zoekterm, connectie

Ik krijg dus geen enkel resultaat, wat er ook gezocht wordt :'(

Iemand een id?
Misschien zo?
RS.Open "EXEC Zoek ' " & zoekterm &" ' ", connectie

En dan zonder die spaties om de ".

[edit] volgens mij zou je een fout moeten krijgen. "Zoek " is namelijk geen geldig SQL statement. "EXEC Zoek" wel in jouw geval.

[ Voor 22% gewijzigd door zneek op 22-09-2003 23:59 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
zneek schreef op 22 september 2003 @ 23:57:
[...]


[edit] volgens mij zou je een fout moeten krijgen. "Zoek " is namelijk geen geldig SQL statement. "EXEC Zoek" wel in jouw geval.
Nee hoor, je hoef niet EXEC of EXECUTE te gebruiken, de naam van een geldige proc is voldoende.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Die quotes die je vergeet zijn idd het probleem.

Dergelijke problemen kan je makkelijk omzeilen door gebruik te maken van parameters ipv je statement te concateneren.

https://fgheysels.github.io/


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
P_de_B schreef op 23 september 2003 @ 08:13:
[...]


Nee hoor, je hoef niet EXEC of EXECUTE te gebruiken, de naam van een geldige proc is voldoende.
* zneek noteert.

wist ik niet eens, nooit geprobeerd. Toch had ik de goede oplossing :) half dan.

Verwijderd

Topicstarter
klinz schreef op 22 September 2003 @ 23:47:
code:
1
SELECT * FROM Log WHERE Titel LIKE '%' + @zoekterm + '%'
Dit werkt in ieder geval!!! Thank you all!!!

Hey Zneek, het lijkt wel of je ruikt dat ik hier iets post _/-\o_

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Wel ff een opmerking:

Als je
code:
1
LIKE %blaat%

doet, zal dat serieus op je performance gaan wegen. Op die manier kunnen er namelijk geen indices gebruikt worden.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 23 September 2003 @ 21:01:
Wel ff een opmerking:

Als je
code:
1
LIKE %blaat%

doet, zal dat serieus op je performance gaan wegen. Op die manier kunnen er namelijk geen indices gebruikt worden.
Wat stel je voor dan whoami, hoe kan ik beter een zoekactie uitvoeren???

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Je beperken tot een
code:
1
LIKE 'blaat%'

als dat mogelijk is....

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 25 September 2003 @ 09:37:
Je beperken tot een
code:
1
LIKE 'blaat%'

als dat mogelijk is....
Als ik zoek op blaat% in een textveld, vindt ie dan niet alleen de velden die beginnen met blaatAAP en blaatHENKIE? Volgens mij vind je dan bijvoorbeeld RAREblaat niet. En als het woord blaat nu het 2e woord in een reeks is. Bijvoorbeeld: ik blaat maar wat. Volgens mij vind je het dan ook niet.

Of je moet elk woord 1 voor 1 sjekken, maar daar gaat ook wel wat serverload in zitten lijkt me :?

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Tja, als het echt niet anders kan, dan zal je idd met LIKE %blaat% moeten werken.

Waar je anders ook eens naar kunt kijken, is naar de Indexing Service van SQL Server, en naar de FREETEXT() functie enzo.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Bedankt voor je reacties!

  • El_BingO
  • Registratie: Juli 2001
  • Laatst online: 18-08 20:06
whoami schreef op 25 September 2003 @ 11:41:
Tja, als het echt niet anders kan, dan zal je idd met LIKE %blaat% moeten werken.

Waar je anders ook eens naar kunt kijken, is naar de Indexing Service van SQL Server, en naar de FREETEXT() functie enzo.
Volgens mij kan je met de Microsoft Search niet een wildcard voor de zoekterm zetten (bv. '*aat'). Je kunt dan alleen zoeken met 'bla*' om hits als 'blaat' te krijgen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Ik dacht het niet hoor.

klik

https://fgheysels.github.io/


  • klungeltweaker
  • Registratie: Augustus 2003
  • Laatst online: 17-07 20:26

klungeltweaker

Maakt altijd alles kapot ...

Wijzig je SELECT * ook direct even in SELECT kolom1, kolom2, .... om problemen in de toekomst te voorkomen en een betere performance.

Verwijderd

Topicstarter
Heb ik al gedaan :)
Hey El BingO, long time no see... hoe is ie?

[ Voor 55% gewijzigd door Verwijderd op 25-09-2003 11:56 ]


  • El_BingO
  • Registratie: Juli 2001
  • Laatst online: 18-08 20:06
Je link verklaart niet wat ik bedoel.
Inderdaad kun je op blaat zoeken en dan je hit krijgen. Maar je kunt alleen op halve woorden zoeken als je de wildcard achteraan zet.

offtopic:
Goed met jou? ;)

[ Voor 8% gewijzigd door El_BingO op 25-09-2003 12:00 ]


Verwijderd

Topicstarter
Goed, goed, stage lopen he (druk, zoals je ziet ;))...

Ik ben wel benieuwd of er nog een andere (snellere) manier is om te zoeken. Misschien weet iemand ook een andere manier voor access??? Mssql is momenteel alleen nog maar voor de spielerei :)
Pagina: 1