Les processus de stockage sont complexes et complexes, mais ils peuvent prendre en charge plusieurs caractères logiques. Nous pouvons choisir de rechercher dans ce tableau et d'optimiser la vitesse des procédures stockées. Connaissez-vous donc l'implémentation du code de l'ASP et des procédures stockées qui recherchent les programmes dans les procédures stockées? Laissez l'éditeur de The Foot New Technology Channel vous emmener en savoir plus à ce sujet!
fonction ASP
La copie de code est la suivante:Fonction Analysekeyword (a_strsource)
dim m_strdest, m_intloop
dim m_intbeginpos, m_intendpos
dim m_strhead, m_strmiddle, m_strail
m_strdest = a_strsource
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Retirez d'abord les espaces de tête et de queue
m_strdest = ltrim (rtrim (m_strdest)))
'Remplacer &, "et" etc. par +, -, espaces
m_strdest = remplacer (m_strdest, "&", "+")
m_strdest = remplacer (m_strdest, "et", "+")
m_strdest = remplacer (m_strdest, "ou", chr (32))
m_strdest = remplacer (m_strdest, "pas", "-")
'Initialiser la variable pour faire aller la boucle suivante
m_intbeginpos = 1
faire pendant que m_intbeginpos <> 0
m_intbeginpos = instr (m_strdest, chr (32))
Si m_intbeginpos <> 0 alors 'si l'espace est trouvé
m_strhead = rtrim (ltrim (gauche (m_strdest, m_intbeginpos))))
Appel d'appel ("[AnalyseKeyword ()]: gère l'espace m_strhead =" + m_strhead)
m_strail = rtrim (ltrim (à droite (m_strdest, len (m_strdest) - m_intbeginpos))))
Appel d'appel ("[AnalyseKeyword ()]: gère l'espace m_strail =" + m_sttrail)
m_strdest = m_strhead + "*" + m_strail
autre
sortir faire
terminer si
boucle
m_strdest = remplacer (m_strdest, "*", chr (32))
Appel d'appel ("[AnalyseKeyWord ()]: Après les espaces de traitement, m_strdest =" + m_strdest)
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Remplacez d'abord les citations simples par des citations doubles
m_strdest = remplacer (m_strdest, chr (39), chr (34))
'Réglez une valeur initiale pour faire passer la boucle
m_intbeginpos = 1
m_intendpos = 1
m_strhead = ""
M_STRTAIL = ""
faire pendant que m_intbeginpos <> 0 et m_intendpos <> 0
'Si des citations doubles sont trouvées, notez la position de départ et recherchez la double citation suivante
m_intbeginpos = instr (m_strdest, chr (34))
Si m_intbeginpos <> 0 alors 'si la première citation est trouvée
Appel d'appel ("[AnalyseKeyWord ()]: l'emplacement où la première citation apparaît:" + cstr (m_intbeginpos)))
m_intendpos = instr (m_intbeginpos + 1, m_strdest, chr (34))
Si m_intendpos <> 0 alors 'si la deuxième citation est trouvée
Appel d'appel ("[AnalyseKeyWord ()]: où la deuxième citation apparaît:" + cstr (m_intendpos))
'Séparez la chaîne entière en trois paragraphes de devis
Appel d'appel ("[AnalyseKeyword ()]: gère les citations m_strdest =" + m_strdest)
m_strhead = Left (m_strdest, m_intbeginpos - 1)
Appel d'appel ("[AnalyseKeyword ()]: gère les devis m_strhead =" + m_strhead)
m_strmiddle = mid (m_strdest, m_intbeginpos + 1, m_intendpos - m_intbeginpos - 1)
Appel d'appel ("[AnalyseKeyWord ()]: Handles Quotes m_strmiddle =" + m_strmiddle)
m_strail = droite (m_strdest, len (m_strdest) - m_intendpos)
Appel d'appel ("[AnalyseKeyword ()]: m_strail =" + m_sttrail)
`` S'il y a un + signe dans les citations, il sera traité comme un caractère et temporairement remplacé par d'autres caractères
m_strmiddle = remplacer (m_strmiddle, "+", "|")
m_strdest = m_strhead + replace (rtrim (ltrim (m_strmiddle)), chr (32), "#") + m_strailt
autre
sortir faire
terminer si
autre
sortir faire
terminer si
boucle
m_strdest = remplacer (m_strdest, chr (34), "+")
Appel d'appel ("[AnalyseKeyWord ()]: Après le traitement des guillemets, m_strdest =" + m_strdest)
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
«Dépannage de plusieurs signes plus, si vous rencontrez plusieurs signes plus, vous pensez que c'est une chaîne, pas un caractère logique
m_strdest = remplacer (m_strdest, "+++", "|||")
m_strdest = remplacer (m_strdest, "++", "||")
Appel d'appel ("[AnalyseKeyWord ()]: Après avoir traité plusieurs signes moins, m_strdest = '" + m_strdest + "'")
'Traitez les espaces des deux côtés du signe plus
m_strdest = remplacer (m_strdest, "+", "+")
m_strdest = remplacer (m_strdest, "+", "+")
m_strdest = remplacer (m_strdest, "+", "+")
Appel d'appel ("[AnalyseKeyWord ()]: Après le traitement des espaces des deux côtés du signe moins M_STRDEST = '" + m_strdest + "'")
'-----------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
«Dépannage de plusieurs signes moins, si vous rencontrez plusieurs signes moins, vous penserez que c'est une chaîne, pas un caractère logique
m_strdest = remplacer (m_strdest, "---", "~~~~")
m_strdest = remplacer (m_strdest, "-", "~~")
Appel d'appel ("[AnalyseKeyWord ()]: Après avoir traité plusieurs signes moins, m_strdest = '" + m_strdest + "'")
'Traitez les espaces des deux côtés du signe moins
m_strdest = remplacer (m_strdest, "-", "-")
m_strdest = remplacer (m_strdest, "-", "-")
m_strdest = remplacer (m_strdest, "-", "-")
Appel d'appel ("[AnalyseKeyWord ()]: Après le traitement des espaces des deux côtés du signe plus m_strdest = '" + m_strdest + "'")
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Si Len (m_strdest)> = 3 alors
m_strhead = Left (m_strdest, 1)
m_strmiddle = mid (m_strdest, 2, len (m_strdest) - 2)
M_STRTAIL = Right (M_STRDEST, 1)
Si m_strhead = "+" ou m_strhead = "-" alors
m_strhead = ""
terminer si
Si m_strtail = "+" ou m_strail = "-" alors
M_STRTAIL = ""
terminer si
m_strdest = m_strhead + m_strmiddle + m_strail
terminer si
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
m_strdest = remplacer (m_strdest, "-", "~~")
m_strdest = remplacer (m_strdest, "++", "||")
m_strdest = remplacer (m_strdest, chr (32), "@")
Analysekeyword = m_strdest
Call Print ("[AnalyseKeyWord ()]: Une fois tout le traitement terminé m_strdest = '" + m_strdest + "'")
fonction finale
%>
Procédures stockées
/ ************************************************************ /
/ * proc name: up_parsewordsearch * /
/ * * /
/ * Description: Recherche de mots clés * /
/ * * /
/ * Paramètres: @a_strcategoryId Catégorie ID * /
/ * @A_IntPosition Call Emplacement * /
/ * @A_StrparseWord Rechercher des mots clés * /
/ * @A_IntrowCount limite le nombre maximum d'enregistrements à obtenir * /
/ * * /
/ * Date: 2000/6/28 * /
/ * * /
/ * Auteur: LiUyunPeng * /
/ * * /
/* histoire: */
/ ************************************************************ /
si existe (sélectionnez * dans sysobjects où id = object_id ("up_parsewordsearch")))
déposez proc up_parsewordsearch
aller
créer proc up_parsewordsearch @a_strparseword varchar (255),
@a_strcategoryid varchar (255),
@a_intposition tinyint,
@a_introwcount int
comme
Déclarer @m_strsqlcondition varchar (255) - la partie conditionnelle de l'instruction SQL
DÉCLAREZ @M_STRSQLLSELECT VARCHAR (255) - partie de sélection de l'instruction-SQL
Déclarer @m_strsqlcategory varchar (100) - partie catégorie de l'instruction SQL
/ * Défendre la partie de sélection de SQL en fonction de l'emplacement d'appel * /
Sélectionnez @m_strsqlSelect
= cas
Quand @a_intposition = 4 alors - bibliothèque de producteurs
"Sélectionner ProductId, 'Title' = ProductName, 'Description' = Left (Description, 100)"
+ "du produit où"
Quand @a_intposition = 5 alors - bibliothèque d'opportunités d'entreprise
"SELECT ID, Title, 'Description' = Left (Convert (Varchar, Content), 100)"
+ "de la berline où"
Quand @a_intposition = 6 alors - bibliothèque-accompagnement
"Select CompanyId, 'Title' = CompanyName, 'Description' = Left (Description, 100)"
+ "De l'entreprise où"
fin
/ * Défendre la partie de classification de SQL en fonction de l'ID de classification * /
sélectionner @m_strsqlcategory
= cas
Lorsque @a_strcategoryid <> "0" alors "catégorieid comme '" + @a_strcategoryid + "%' et"
autre ""
fin
/ * Déterminez la partie conditionnelle de SQL en fonction de l'emplacement de l'appel * /
sélectionner @m_strsqlcondition
= cas
Quand @a_intposition = 4 - Product
puis "(ProductName comme '%" + @a_strparseword + "%'"
+ "ou description comme '%" + @a_strparseword + "%'"
+ "ou productère comme '%" + @a_strparseword + "%')"
Quand @A_IntPosition = 5 - Opportunités d'entreprise
puis "(titre comme '%" + @a_strparseword + "%'"
+ "ou mot-clé comme '%" + @a_strparseword + "%')"
Quand @a_intposition = 6
puis "(CompanyName comme '%" + @a_strparseword + "%'"
+ "ou description '%" + @a_strparseword + "%')"
fin
Définir RowCount @A_IntrowCount
exec (@m_strsqlselect + @m_strsqlcategory + @m_strsqlcondition)
Définir RowCount 0
aller
Ce qui précède est la mise en œuvre du code du programme de recherche dans ASP et les procédures stockées. Je crois que tout le monde a une certaine compréhension. Si vous souhaitez connaître plus d'informations techniques, veuillez continuer à faire attention à la mauvaise chaîne de nouvelles technologies!