[Retrait de la question: le problème est survenu en raison de l'absence d'échappement des valeurs soumises sous forme Web. Le script ASP a supprimé les espaces non échappés causant ainsi le problème.]La requête SQL Server utilisant LIKE a rencontré des problèmes avec les espaces sous VBScript
Dans une page Web, j'essaie d'effectuer une recherche sur une table dans MS SQL Server à l'aide de VBScript. La recherche utilise une clause LIKE
(avec des caractères génériques). La recherche fonctionne correctement si l'entrée n'a aucun espace. Cependant, s'il y a un espace dans l'entrée, la recherche ne retourne rien. Par exemple, si je recherche IT Department
je n'ai rien, mais si je cherche Department
, je reçois IT Department
. D'une certaine manière, l'espace entre IT
et Department
cause des problèmes. Si j'exécute le script directement sur le serveur à l'aide de SQL Server Management Studio, la recherche à l'aide de IT Department
renvoie les résultats corrects.
De même, si je n'utilise pas les paramètres d'espace réservé SQL mais que je place directement la chaîne de recherche, la recherche fonctionne.
Ce n'est que dans le cas où la chaîne de recherche contient un espace et utilise des espaces réservés où la recherche échoue.
Voici le code que je utilise:
Dim oCmd, OffDescParam, description, query
description = "IT Department"
Set oCmd = Server.CreateObject("ADODB.Command")
OffDescParam = "%" & description & "%"
Set objOffDescParam = _
oCmd.CreateParameter("@offdesc", adChar, adParamInput, Len(OffDescParam), OffDescParam)
query = "SELECT OfficialDescription " & _
"FROM [MyDatabase].[dbo].[Organizations] " & _
"WHERE (OfficialDescription LIKE ?)" & _
"ORDER BY OfficialDescription"
' If I use "WHERE (OfficialDescription LIKE '%IT Department%')" it works.
oCmd.ActiveConnection = "some/connection/string"
oCmd.ActiveConnection.CursorLocation = adUseClient
oCmd.CommandType = adCmdText
oCmd.CommandText = query
oCmd.Parameters.Append objOffDescParam
oCmd.Prepared = True
Set oRst = CopyRecordSet(oCmd.Execute)
oCmd.ActiveConnection.close
Retrait d'une question: le problème est survenu en raison de l'absence d'échappement des valeurs soumises sous forme Web. Le script ASP a supprimé les espaces non échappés, provoquant ainsi le problème. – rlandster