Cet article présente principalement la solution au débordement de mémoire des requêtes floues ASP dans ACCESS. La raison de ce problème est le problème de codage des caractères, qui est résolu en utilisant une fonction de transcodage. Les amis dans le besoin peuvent se référer à ce qui suit.
Aujourd'hui, alors que j'effectuais la maintenance quotidienne d'un site Web, j'ai découvert que le programme de messagerie du site Web n'était pas soumis à une vérification et à un filtrage stricts, ce qui générait près de 100 000 données indésirables. Il contient de nombreuses informations importantes, ce qui nécessite de nettoyer les données et d'ajouter des mesures de vérification plus strictes.
Cependant, il n’est pas scientifique de supprimer directement dans la base de données et de nombreuses informations importantes seront supprimées par erreur.
Grâce à des instructions de requête floues :
Copiez le code comme suit :
sélectionnez * dans Commentaires où des commentaires comme '%http%'
Résultat : "Mémoire insuffisante"
Après des recherches constantes, la cause principale du problème a été trouvée :
Lorsque vous utilisez le mot-clé LIKE pour interroger des symboles japonais dans asp, une erreur se produira, telle que Chr(-23075), indiquant un débordement de mémoire.
Si les données de la table de données contiennent des caractères japonais ou certains caractères chinois non simplifiés spéciaux, des erreurs de dépassement de mémoire se produiront également.
Il est indiqué en ligne que le problème ci-dessus a été confirmé par les ingénieurs Microsoft de Microsoft Power Camp et qu'il s'agit d'un BUG de produit qui ne peut pas être résolu. Le seul moyen est d'encoder l'intégralité des données de la base de données au format texte ANSI, puis de les enregistrer. DÉCODER à nouveau lorsqu'il est affiché.
Il n'y a pas de solution. La seule façon est de convertir le champ et de l'enregistrer dans un autre nouveau champ comme mentionné ci-dessus, puis d'effectuer l'opération de nettoyage. Il est vraiment difficile de faire face à cet excès de données.
La fonction EncodeString effectue l'échappement des caractères
Copiez le code comme suit :
Fonction EncodeString(strWords)
Diminuez-moi aussi longtemps
Dim strEncodeWords
Pour i = 1 À Len(strWords)
strEncodeWords = strEncodeWords & CStr(Asc(Mid(strWords, i, 1))) & ","
Suivant
EncodeString = strEncodeWords
Fonction de fin
Après vous être échappé de cette manière, lors d'une recherche floue, échappez aux mots-clés
Copiez le code comme suit :
supprimer * des commentaires où Comments_new comme '%&EncodeString("http")&%'