Процессы хранения сложны и сложны, но они могут поддерживать несколько логических символов. Мы можем выбрать поиск в этой таблице и оптимизировать скорость сохраненных процедур. Итак, знаете ли вы реализацию кода ASP и сохраненные процедуры, которые ищут программы в хранимых процедурах? Позвольте редактору нового технологического канала Foot, чтобы узнать больше об этом!
функция ASP
Кода -копия выглядит следующим образом:Function AnalyseKeyWord (A_STRSOURCE)
Dim m_strdest, m_intloop
dim m_intbeginpos, m_intendpos
Dim m_strhead, m_strmiddle, m_strail
m_strdest = a_strsource
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Сначала удалите места в конце
m_strdest = ltrim (rtrim (m_strdest))
'Заменить &, "и" и т. Д. с +, -, пространства
m_strdest = replace (m_strdest, "&", "+")
m_strdest = replace (m_strdest, "и", "+")
m_strdest = replace (m_strdest, "или", chr (32))
m_strdest = replace (m_strdest, "не", "-")
'Инициализируйте переменную, чтобы сделать следующий цикл Go
m_intbeginpos = 1
делать, пока m_intbeginpos <> 0
m_intbeginpos = instr (m_strdest, chr (32))
Если M_INTBEGINPOS <> 0, то если найдено пространство
m_strhead = rtrim (ltrim (слева (m_strdest, m_intbeginpos)))))))))
Call Print ("[analysekekword ()]: обрабатывает пространство m_strhead =" + m_strhead)
m_strail = rtrim (ltrim (right (m_strdest, len (m_strdest) - m_intbeginpos)))))))
Call Print ("[analysekekword ()]: обрабатывает пространство m_strail =" + m_strail)
m_strdest = m_strhead + "*" + m_strail
еще
Выход DO
конец, если
петля
m_strdest = replace (m_strdest, "*", chr (32))
Call Print ("[analysekekword ()]: после обработки, m_strdest =" + m_strdest)
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Сначала замените отдельные кавычки на двойные кавычки
m_strdest = reply (m_strdest, chr (39), chr (34))
'Установите начальное значение, чтобы сделать петлю
m_intbeginpos = 1
m_intendpos = 1
m_strhead = ""
m_strail = ""
делать, пока m_intbeginpos <> 0 и m_intendpos <> 0
'Если найдены двойные кавычки, обратите внимание на начальную позицию и ищите следующую двойную цитату
m_intbeginpos = instr (m_strdest, chr (34))
Если M_INTBEGINPOS <> 0, то если найдена первая цитата
Call Print ("[analysekekword ()]: местоположение, где появляется первая цитата:" + cstr (m_intbeginpos))
m_intendpos = instr (m_intbeginpos + 1, m_strdest, chr (34))
Если m_intendpos <> 0, то есть вторая цитата найдена
Call Print ("[analysekekword ()]: где появляется вторая цитата:" + cstr (m_intendpos))
'Разделите всю строку на три абзаца в кавычках
Call Print ("[analysekekword ()]: обрабатывает кавычки m_strdest =" + m_strdest)
m_strhead = left (m_strdest, m_intbeginpos - 1)
Call Print ("[analysekekword ()]: обрабатывает кавычки m_strhead =" + m_strhead)
m_strmiddle = mid (m_strdest, m_intbeginpos + 1, m_intendpos - m_intbeginpos - 1)
Call Print ("[analysekekword ()]: обрабатывает кавычки m_strmiddle =" + m_strmiddle)
m_strail = right (m_strdest, len (m_strdest) - m_intendpos)
Call Print ("[analysekekword ()]: m_strail =" + m_strail)
'Если в кавычках есть знак +, он будет обрабатываться как символ и временно заменен другими символами
M_STRMIDDLE = reply (m_strmiddle, "+", "|")
m_strdest = m_strhead + replace (rtrim (ltrim (m_strmiddle)), chr (32), "#") + m_strail
еще
Выход DO
конец, если
еще
Выход DO
конец, если
петля
m_strdest = reply (m_strdest, chr (34), "+")
Call Print ("[analysekekword ()]: после обработки кавычки, m_strdest =" + m_strdest)
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Устранение неполадок с несколькими знаками плюса, если вы встречаете несколько знаков плюс, вы думаете, что это строка, а не логический символ
m_strdest = replace (m_strdest, "+++", "|||")
m_strdest = replace (m_strdest, "++", "||")
Call Print ("[analysekekword ()]: после обработки нескольких знаков минус, m_strdest = '" + m_strdest + "'")
'Обработайте пространства по обе стороны знака плюса
m_strdest = replace (m_strdest, " +", " +")
m_strdest = replace (m_strdest, "+", "+")
m_strdest = replace (m_strdest, " +", " +")
Call Print ("[AnalyseKeyWord ()]: после обработки пространств по обеим сторонам минус знак m_strdest = '" + m_strdest + "'")
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Устранение неполадок с несколькими знаками минус, если вы столкнетесь с несколькими знаками минус, вы подумаете, что это строка, а не логический символ
m_strdest = replace (m_strdest, "---", "~~~~")
m_strdest = replace (m_strdest, "-", "~~")
Call Print ("[analysekekword ()]: после обработки нескольких знаков минус, m_strdest = '" + m_strdest + "'")
«Обработайте пространства по обеим сторонам знака минус
m_strdest = replace (m_strdest, " -", " -")
m_strdest = replace (m_strdest, "-", "-")
m_strdest = replace (m_strdest, " -", " -")
Call Print ("[analysekekword ()]: после обработки пространств по обеим сторонам плюс знак m_strdest = '" + m_strdest + "'")
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Если len (m_strdest)> = 3 тогда
m_strhead = слева (m_strdest, 1)
m_strmiddle = mid (m_strdest, 2, len (m_strdest) - 2)
m_strail = справа (m_strdest, 1)
Если m_strhead = "+" или m_strhead = "-" Тогда
m_strhead = ""
конец, если
Если m_strail = "+" или m_strail = "-" Тогда
m_strail = ""
конец, если
m_strdest = m_strhead + m_strmiddle + m_strail
конец, если
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
m_strdest = replace (m_strdest, "-", "~~")
m_strdest = replace (m_strdest, "++", "||")
m_strdest = replace (m_strdest, chr (32), "@")
AnalyseKeyWord = m_strdest
Call Print ("[analysekekword ()]: после завершения всей обработки m_strdest = '" + m_strdest + "'")
конечная функция
%>
Хранимые процедуры
/*************************************************
/ * Имя Proc: up_parsewordsearch */
/ * */
/ * Описание: Поиск ключевых слов */
/ * */
/ * Параметры: @a_strcategoryid ID категории */
/ * @A_INTPOSTOSION Разговор
/ * @a_strparseword Поиск ключевых слов */
/ * @A_INTROWCOUNT ограничивает максимальное количество записей, чтобы получить */
/ * */
/ * Дата: 2000/6/28 *//
/ * */
/ * Автор: liuyunpeng */
/ * */
/ * История: */
/*************************************************
Если существует (выберите * из sysobjects, где id = object_id ("up_parsewordsearch"))))))
DEAR PORC UP_PARSEWORDSEARCH
идти
Создать proc up_parsewordsearch @a_strparseword varchar (255),
@a_strcategoryid varchar (255),
@a_intposition tinyint,
@a_introwcount int
как
Объявите @m_strsqlcondition varchar (255) -условная часть оператора SQL
Объявить @m_strsqlselect varchar (255) -Sql оператора.
Объявить @m_strsqlcategorory varchar (100) -Категория часть оператора SQL
/*Защитите часть выбора SQL на основе местоположения вызова*/
Выберите @m_strsqlselect
= случай
Когда @A_INTPOSION = 4, затем -Библиотека продуктов
"Выберите ProductId, 'title' = productName, 'description' = слева (описание, 100)»
+ "из продукта, где"
Когда @A_INTPOSION = 5 тогда -Библиотека возможностей -бизнес -возможностей
"Выберите ID, заголовок,« Описание '= левое (преобразовать (varchar, content), 100) »
+ "из бизнеса, где"
Когда @a_intposition = 6, тогда -библиотека Company
"Select CompanyId, 'Title' = companyName,« Описание '= слева (описание, 100) »
+ "От компании, где"
конец
/*Защитите классификационную часть SQL на основе идентификатора классификации*/
Выберите @m_strsqlcategory
= случай
Когда @a_strcategoryid <> "0", затем "CategoryId Like '" + @A_StrcategoryId + "%' и"
еще ""
конец
/*Определите условную часть SQL на основе местоположения вызова*/
Выберите @m_strsqlcondition
= случай
Когда @a_intposition = 4 -Продюк
Тогда "(ProductName Like '%" + @a_strparseword + "%'"
+ "или описание как '%" + @a_strparseword + "%'"
+ "или имена, как"%" + @a_strparseword +"%') "
Когда @A_INTPOSION = 5 -возможности бизнеса
Тогда "(заголовок как '%" + @a_strparseword + "%'"
+ "или ключевое слово, как '%" + @a_strparseword + "%')"
Когда @a_intposition = 6
Тогда "(CompanyName Like '%" + @A_STRPARSEWORD + "%'"
+ "или описание '%" + @a_strparseword + "%')"
конец
Установите ROWCOUNT @A_INTROWCOUNT
exec (@m_strsqlselect + @m_strsqlcategory + @m_strsqlcondition)
Установить RowCount 0
идти
Выше приведено реализация кода поисковой программы в ASP и хранимых процедур. Я считаю, что у всех есть определенное понимание. Если вы хотите узнать больше технической информации, пожалуйста, продолжайте обращать внимание на неправильный новый канал технологии!