กระบวนการจัดเก็บข้อมูลนั้นซับซ้อนและซับซ้อน แต่สามารถรองรับอักขระเชิงตรรกะได้หลายตัว เราสามารถเลือกที่จะค้นหาในตารางนี้และเพิ่มประสิทธิภาพความเร็วของขั้นตอนที่เก็บไว้ ดังนั้นคุณรู้ว่าการใช้รหัสของ ASP และขั้นตอนที่เก็บไว้ซึ่งการค้นหาโปรแกรมในขั้นตอนที่เก็บไว้หรือไม่? ให้บรรณาธิการของช่องเทคโนโลยีใหม่ของ Foot พาคุณไปเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้!
ฟังก์ชัน ASP
การคัดลอกรหัสมีดังนี้:Function AnalySekeyword (a_strsource)
dim m_strdest, m_intloop
dim m_intbeginpos, m_intendpos
dim m_strhead, m_strmiddle, m_strtail
m_strdest = a_strsource
-
ก่อนอื่นถอดศีรษะและหาง
m_strdest = ltrim (rtrim (m_strdest)))
'แทนที่ &, "และ" ฯลฯ ด้วย +, -, ช่องว่าง
m_strdest = แทนที่ (m_strdest, "&", "+")
m_strdest = แทนที่ (m_strdest, "และ", "+")
m_strdest = แทนที่ (m_strdest, "หรือ", chr (32))
m_strdest = แทนที่ (m_strdest, "ไม่", "-")
'เริ่มต้นตัวแปรเพื่อให้ลูปต่อไปนี้ไป
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 ("[AnalySekeyword ()]: จัดการพื้นที่ m_strhead =" + m_strhead)
m_strtail = rtrim (ltrim (ขวา (m_strdest, len (m_strdest) - m_intbeginpos)))))))))))))))))))
Call Print ("[AnalySekeyword ()]: จัดการพื้นที่ m_strtail =" + m_strtail)
m_strdest = m_strhead + "*" + m_strtail
อื่น
ออก
สิ้นสุดถ้า
วง
m_strdest = แทนที่ (m_strdest, "*", chr (32))
Call Print ("[AnalySekeyword ()]: หลังจากการประมวลผลช่องว่าง, m_strdest =" + m_strdest)
-
-
'แรกแทนที่คำพูดเดียวด้วยคำพูดสองเท่า
m_strdest = แทนที่ (m_strdest, chr (39), chr (34))
'ตั้งค่าเริ่มต้นเพื่อให้ลูปดำเนินไป
m_intbeginpos = 1
m_intendPos = 1
m_strhead = ""
m_strtail = ""
ทำในขณะที่ m_intbeginpos <> 0 และ m_intendpos <> 0
'หากพบคำพูดสองครั้งให้สังเกตตำแหน่งเริ่มต้นและค้นหาคำพูดสองครั้งถัดไป
m_intbeginPos = instr (m_strdest, chr (34))
ถ้า m_intbeginpos <> 0 จากนั้น 'หากพบคำพูดแรก
Call Print ("[AnalySekeyword ()]: ตำแหน่งที่คำพูดแรกปรากฏขึ้น:" + CSTR (M_IntBeginPos))
m_intendpos = instr (m_intbeginpos + 1, m_strdest, chr (34))
ถ้า m_intendpos <> 0 จากนั้น 'หากพบคำพูดที่สอง
Call Print ("[AnalySekeyword ()]: เมื่อคำพูดที่สองปรากฏขึ้น:" + CSTR (M_IntendPos)))
'แยกสตริงทั้งหมดออกเป็นสามย่อหน้าเป็นคำพูด
Call Print ("[AnalySekeyword ()]: จัดการคำพูด m_strdest =" + m_strdest)
m_strhead = ซ้าย (m_strdest, m_intbeginpos - 1)
Call Print ("[AnalySekeyword ()]: จัดการคำพูด m_strhead =" + m_strhead)
m_strmiddle = mid (m_strdest, m_intbeginpos + 1, m_intendpos - m_intbeginpos - 1)
Call Print ("[AnalySekeyword ()]: จัดการคำพูด m_strmiddle =" + m_strmiddle)
m_strtail = ขวา (m_strdest, len (m_strdest) - m_intendpos)
Call Print ("[AnalySekeyword ()]: M_STRTAIL =" + M_STRTAIL)
'หากมีเครื่องหมาย + ในเครื่องหมายคำพูดมันจะถูกประมวลผลเป็นตัวละครและแทนที่ด้วยอักขระอื่นชั่วคราว
m_strmiddle = แทนที่ (m_strmiddle, "+", "|")
m_strdest = m_strhead + แทนที่ (rtrim (ltrim (m_strmiddle)), Chr (32), "#") + m_strtail
อื่น
ออก
สิ้นสุดถ้า
อื่น
ออก
สิ้นสุดถ้า
วง
m_strdest = แทนที่ (m_strdest, chr (34), "+")
การโทรพิมพ์ ("[analysekeyword ()]: หลังจากการประมวลผลเครื่องหมายใบเสนอราคา, m_strdest =" + m_strdest)
-
-
'การแก้ไขปัญหาหลายสัญญาณบวกถ้าคุณพบสัญญาณบวกหลายสัญญาณคุณคิดว่ามันเป็นสตริงไม่ใช่อักขระเชิงตรรกะ
m_strdest = แทนที่ (m_strdest, "+++", "|||")
m_strdest = แทนที่ (m_strdest, "++", "||")
Call Print ("[AnalySekeyword ()]: หลังจากประมวลผลหลายเครื่องหมายลบ, m_strdest = '" + m_strdest + "'")
'รักษาช่องว่างทั้งสองด้านของเครื่องหมายบวก
m_strdest = แทนที่ (m_strdest, " +", " +")
m_strdest = แทนที่ (m_strdest, "+", "+")
m_strdest = แทนที่ (m_strdest, " +", " +")
Call Print ("[AnalySekeyword ()]: หลังจากการประมวลผลช่องว่างทั้งสองด้านของเครื่องหมายลบ m_strdest = '" + m_strdest + "'")
-
-
'การแก้ไขปัญหาหลายสัญญาณลบหากคุณพบสัญญาณลบหลายรายการคุณจะคิดว่ามันเป็นสตริงไม่ใช่ตัวละครเชิงตรรกะ
m_strdest = แทนที่ (m_strdest, "---", "~~~~")
m_strdest = แทนที่ (m_strdest, "-", "~~")
Call Print ("[AnalySekeyword ()]: หลังจากประมวลผลหลายเครื่องหมายลบ, m_strdest = '" + m_strdest + "'")
'รักษาช่องว่างทั้งสองด้านของเครื่องหมายลบ
m_strdest = แทนที่ (m_strdest, " -", " -")
m_strdest = แทนที่ (m_strdest, "-", "-")
m_strdest = แทนที่ (m_strdest, " -", " -")
Call Print ("[AnalySekeyword ()]: หลังจากการประมวลผลช่องว่างทั้งสองด้านของเครื่องหมายบวก m_strdest = '" + m_strdest + "'")
-
-
ถ้า len (m_strdest)> = 3 แล้ว
m_strhead = ซ้าย (m_strdest, 1)
m_strmiddle = mid (m_strdest, 2, len (m_strdest) - 2)
m_strtail = ขวา (m_strdest, 1)
ถ้า m_strhead = "+" หรือ m_strhead = "-" แล้ว
m_strhead = ""
สิ้นสุดถ้า
ถ้า m_strtail = "+" หรือ m_strtail = "-" แล้ว
m_strtail = ""
สิ้นสุดถ้า
m_strdest = m_strhead + m_strmiddle + m_strtail
สิ้นสุดถ้า
-
m_strdest = แทนที่ (m_strdest, "-", "~~")
m_strdest = แทนที่ (m_strdest, "++", "||")
m_strdest = แทนที่ (m_strdest, chr (32), "@")
AnalySeKeyWord = M_STRDEST
Call Print ("[AnalySekeyword ()]: หลังจากการประมวลผลทั้งหมดเสร็จสมบูรณ์ m_strdest = '" + m_strdest + "'")
ฟังก์ชันสิ้นสุด
-
ขั้นตอนที่เก็บไว้
-
/ * ชื่อ PROC: UP_PARSEWORDSEARCH */
-
/ * คำอธิบาย: การค้นหาคำหลัก */
-
/ * พารามิเตอร์: @a_strcategoryid หมวดหมู่ ID *//
/ * @a_intposition การโทรตำแหน่ง *//
/ * @a_strparseword ค้นหาคำหลัก *//
/ * @A_IntrowCount จำกัด จำนวนสูงสุดของบันทึกเพื่อรับ */
-
/ * วันที่: 2000/6/28 */
-
/ * ผู้แต่ง: Liuyunpeng */
-
/* ประวัติศาสตร์: */
-
ถ้ามีอยู่ (เลือก * จาก sysobjects โดยที่ id = object_id ("up_parsewordsearch"))))))))))))))))
วาง proc 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_strsqlcategory varchar (100) -หมวดหมู่ส่วนหนึ่งของคำสั่ง SQL
/*ปกป้องส่วนที่เลือกของ SQL ตามตำแหน่งการโทร*//
เลือก @m_strsqlselect
= กรณี
เมื่อ @a_intposition = 4 แล้ว -ไลบรารีผลิตภัณฑ์
"เลือก ProductId, 'title' = productName, 'คำอธิบาย' = ซ้าย (คำอธิบาย, 100)"
+ "จากผลิตภัณฑ์ที่"
เมื่อ @a_intposition = 5 แล้ว -ห้องสมุดโอกาสธุรกิจ
"เลือก ID, ชื่อเรื่อง, 'คำอธิบาย' = ซ้าย (แปลง (varchar, เนื้อหา), 100)"
+ "จาก Businesschance ที่"
เมื่อ @a_intposition = 6 แล้ว -คลังสินค้าของ บริษัท
"เลือก 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 + "%'"
+ "หรือ producername เช่น '%" + @a_strparseword + "%')"
เมื่อ @a_intposition = 5 -โอกาสทางธุรกิจ
จากนั้น "(ชื่อเช่น '%" + @a_strparseword + "%'"
+ "หรือคำหลักเช่น '%" + @a_strparseword + "%')"
เมื่อ @a_intposition = 6
จากนั้น "(ชื่อ บริษัท ชอบ '%" + @a_strparseword + "%'"
+ "หรือคำอธิบาย '%" + @a_strparseword + "%')"
จบ
ตั้งค่า rowcount @a_introwcount
exec (@m_strsqlselect + @m_strsqlcategory + @m_strsqlcondition)
ตั้งค่า rowcount 0
ไป
ข้างต้นคือการใช้รหัสของโปรแกรมการค้นหาใน ASP และขั้นตอนที่เก็บไว้ ฉันเชื่อว่าทุกคนมีความเข้าใจที่แน่นอน หากคุณต้องการทราบข้อมูลทางเทคนิคเพิ่มเติมโปรดดำเนินการต่อเพื่อให้ความสนใจกับช่องทางเทคโนโลยีใหม่ที่ไม่ถูกต้อง!