Os processos de armazenamento são complexos e complexos, mas podem suportar vários caracteres lógicos. Podemos optar por pesquisar nesta tabela e otimizar a velocidade dos procedimentos armazenados. Então você conhece a implementação do código do ASP e dos procedimentos armazenados que pesquisam programas nos procedimentos armazenados? Deixe o editor do The Foot New Technology Channel levar você para saber mais sobre isso!
função asp
A cópia do código é a seguinte:Função AnalyseKeyword (a_strsource)
dim m_strdest, m_intloop
Dim M_INTBEGINPOS, M_INTENDPOS
Dim m_strhead, m_strmiddle, m_strtail
m_strdest = a_strsource
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Primeiro remova os espaços no final
m_strdest = ltrim (rtrim (m_strdest))
'Substituir & "e" etc. com +, -, espaços
m_strdest = substituir (m_strdest, "&", "+")
m_strdest = substituir (m_strdest, "e", "+")
m_strdest = substituir (m_strdest, "ou", chr (32))
m_strdest = substituir (m_strdest, "não", "-")
'Inicialize a variável para fazer o seguinte loop ir
m_intbeginpos = 1
faça enquanto m_intbeginpos <> 0
M_INTBEGINPOS = Instr (m_strdest, Chr (32))
Se m_intbeginpos <> 0, então 'se o espaço for encontrado
m_strhead = rtrim (ltrim (esquerda (m_strdest, m_intbeginpos)))
Chamada de impressão ("[analseKeyword ()]: lida com o espaço m_strhead =" + m_strhead)
M_STRATH = RTRIM (LTRIM (direita (m_strdest, len (m_strdest) - m_intbeginpos))))
Chamada de impressão ("[AnalyseKeyword ()]: lida com o espaço m_strail =" + m_straty)
m_strdest = m_strhead + "*" + m_strtail
outro
saída do
final se
laço
m_strdest = substituir (m_strdest, "*", chr (32))
Chamada de impressão ("[analseKeyword ()]: Após o processamento de espaços, m_strdest =" + m_strdest)
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Primeiro substitua citações únicas por citações duplas
m_strdest = substituir (m_strdest, chr (39), chr (34))
'Defina um valor inicial para fazer o loop ir
m_intbeginpos = 1
m_intendpos = 1
m_strhead = ""
M_STRATRATH = ""
faça enquanto m_intbeginpos <> 0 e m_intendpos <>
'Se forem encontradas cotações duplas, observe a posição inicial e procure a próxima cotação dupla
M_INTBEGINPOS = Instr (m_strdest, Chr (34))
Se m_intbeginpos <> 0, então 'se a primeira citação for encontrada
Chame Print ("[AnalyseKeyword ()]: o local onde a primeira citação aparece:" + cstr (m_intbeginpos))
m_intendpos = instrum (m_intbeginpos + 1, m_strdest, chr (34))
Se m_intendpos <> 0, então 'se a segunda citação for encontrada
Chamada de impressão ("[analseKeyword ()]: onde a segunda citação aparece:" + cstr (m_intendpos)))
'Separe a string inteira em três parágrafos nas cotações
Chamada de impressão ("[analseKeyword ()]: lida com aspas m_strdest =" + m_strdest)
m_strhead = esquerda (m_strdest, m_intbeginpos - 1)
Chamada de impressão ("[analseKeyword ()]: lida com aspas m_strhead =" + m_strhead)
m_strmiddle = mid (m_strdest, m_intbeginpos + 1, m_intendpos - m_intbeginpos - 1)
Chamada de impressão ("[analseKeyword ()]: lida com aspas m_strmiddle =" + m_strmiddle)
M_STRATH = Right (m_strdest, len (m_strdest) - m_intendpos)
Ligue para a impressão ("[AnalyseKeyword ()]: m_strail =" + m_straty)
'Se houver um sinal de A + nas cotações, ele será processado como um personagem e temporariamente substituído por outros personagens
m_strmiddle = substituir (m_strmiddle, "+", "|")
m_strdest = m_strhead + reply (rtrim (lTrim (m_strmiddle)), chr (32), "#") + m_straty
outro
saída do
final se
outro
saída do
final se
laço
m_strdest = substituir (m_strdest, chr (34), "+")
Chamada de impressão ("[analseKeyword ()]: Após o processamento de aspas, m_strdest =" + m_strdest)
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Solução de problemas de múltiplos sinais mais, se você encontrar vários sinais mais, você acha que é uma string, não um personagem lógico
m_strdest = substituir (m_strdest, "+++", "|||")
m_strdest = substituir (m_strdest, "++", "||")
Ligue para a impressão ("[analseKeyword ()]: Após o processamento de vários sinais menos, m_strdest = '" + m_strdest + "'")
'Trate os espaços em ambos os lados do sinal de posição
m_strdest = substituir (m_strdest, " +", " +")
m_strdest = substituir (m_strdest, "+", "+")
m_strdest = substituir (m_strdest, " +", " +")
Chamada de impressão ("[AnalyseKeyword ()]: Após o processamento de espaços em ambos os lados do sinal menos m_strdest = '" + m_strdest + "'")
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Solução de problemas de vários sinais menos, se você encontrar vários sinais menos
m_strdest = substituir (m_strdest, "---", "~~~~")
m_strdest = substituir (m_strdest, "-", "~~")
Ligue para a impressão ("[analseKeyword ()]: Após o processamento de vários sinais menos, m_strdest = '" + m_strdest + "'")
'Trate os espaços em ambos os lados do sinal de menos
m_strdest = substituir (m_strdest, " -", " -")
m_strdest = substituir (m_strdest, "-", "-")
m_strdest = substituir (m_strdest, " -", " -")
Chamada de impressão ("[AnalyseKeyword ()]: Após o processamento de espaços em ambos os lados do sinal de plus m_strdest = '" + m_strdest + "'")
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Se Len (m_strdest)> = 3 então
m_strhead = esquerda (m_strdest, 1)
m_strmiddle = mid (m_strdest, 2, len (m_strdest) - 2)
M_STRATH = Right (m_strdest, 1)
Se m_strhead = "+" ou m_strhead = "-" então
m_strhead = ""
final se
Se m_strail = "+" ou m_strail = "-" então
M_STRATRATH = ""
final se
m_strdest = m_strhead + m_strmiddle + m_straty
final se
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
m_strdest = substituir (m_strdest, "-", "~~")
m_strdest = substituir (m_strdest, "++", "||")
m_strdest = substituir (m_strdest, chr (32), "@")
AnalyseKeyword = m_strdest
Chamada de impressão ("[analseKeyword ()]: Depois que todo o processamento é concluído m_strdest = '" + m_strdest + "'")
Função final
%>
Procedimentos armazenados
/***********************************************
/ * Proc Nome: up_parsewordSearch */
/ * */
/ * Descrição: Pesquisa de palavras -chave */
/ * */
/ * Parâmetros: @a_strcategoryId ID da categoria */
/ * @a_intPosition Localização de chamada */
/ * @a_strparseword Search por palavras -chave */
/ * @a_introwcount limita o número máximo de registros para obter */
/ * */
/ * Data: 2000/6/28 */
/ * */
/ * Autor: Liuyunpeng */
/ * */
/* história: */
/***********************************************
Se existe (selecione * de sysobjects onde id = object_id ("up_parsewordsearch"))
soltar proc up_parsewordsearch
ir
Crie Proc up_parsewordsearch @a_strparseword varchar (255),
@a_strcategoryid varchar (255),
@a_intposition tinyint,
@a_introwcount int
como
Declare @m_strsqlcondition varchar (255) -a parte condicional da instrução SQL
Declare @m_strsqlselect varchar (255) -SQL Part
Declare @m_strsqlcategory varchar (100) -Parte da categoria da instrução SQL
/*Defenda a parte de seleção do SQL com base no local da chamada*/
Selecione @m_strsqlselect
= caso
Quando @A_IntPosition = 4 Then --Product Library
"Selecione ProductId, 'Title' = ProductName, 'Descrição' = esquerda (Descrição, 100)"
+ "Do produto onde"
Quando @A_IntPosition = 5 -Biblioteca de oportunidades de negócios
"Selecione ID, título, 'Descrição' = esquerda (convert (varchar, content), 100)"
+ "Do BusinessChance Where"
Quando @A_IntPosition = 6 então -Company Library
"Select CompanyId, 'Title' = CompanyName, 'Descrição' = esquerda (Descrição, 100)"
+ "Da empresa onde"
fim
/*Defenda a parte de classificação do SQL com base no ID da classificação*/
Selecione @m_strsqlcategory
= caso
Quando @a_strcategoryId <> "0" então "categoryId como '" + @a_strcategoryId + "%' e"
outro ""
fim
/*Determine a parte condicional do SQL com base no local da chamada*/
Selecione @m_strsqlcondition
= caso
Quando @a_intposition = 4 --product
Então "(nome do produto como '%" + @a_strparseword + "%'"
+ "ou descrição como '%" + @a_strparseword + "%'"
+ "OU NOME DE PRODUNDO LIGE
Quando @a_intposition = 5 -oportunidades de negócios
Então "(título como '%" + @a_strparseword + "%'"
+ "ou palavra -chave como '%" + @a_strparseword + "%')"
Quando @a_intposition = 6
Então "(CompanyName Like '%" + @a_strparseword + "%'"
+ "ou descrição '%" + @a_strparseword + "%')"
fim
Definir RowCount @A_IntrowCount
EXEC (@m_strsqlselect + @m_strsqlcategory + @m_strsqlcondition)
Defina o RowCount 0
ir
O exposto acima é a implementação do código do programa de pesquisa no ASP e nos procedimentos armazenados. Eu acredito que todo mundo tem um certo entendimento. Se você quiser saber mais informações técnicas, continue prestando atenção ao novo canal de tecnologia errada!