Proses penyimpanan kompleks dan kompleks, tetapi mereka dapat mendukung banyak karakter logis. Kami dapat memilih untuk mencari di tabel ini dan mengoptimalkan kecepatan prosedur yang tersimpan. Jadi, apakah Anda tahu kode implementasi ASP dan prosedur tersimpan yang mencari program dalam prosedur tersimpan? Biarkan editor saluran teknologi baru membawa Anda untuk mempelajari lebih lanjut!
fungsi ASP
Salinan kode adalah sebagai berikut:Function analyseyword (a_strsource)
redup m_strdest, m_intloop
redup m_intbeginpos, m_intendpos
redup m_strhead, m_strmiddle, m_strail
m_strdest = a_strsource
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Pertama -tama lepaskan spasi di akhir
m_strdest = ltrim (rtrim (m_strdest))
'Ganti &, "dan" dll. Dengan +, -, spasi
m_strdest = ganti (m_strdest, "&", "+")
m_strdest = ganti (m_strdest, "dan", "+")
m_strdest = ganti (m_strdest, "atau", chr (32))
m_strdest = ganti (m_strdest, "not", "-")
'Inisialisasi variabel untuk membuat loop berikut
m_intbeginpos = 1
lakukan sementara m_intbeginpos <> 0
M_INTBEGINPOS = Instr (m_strdest, chr (32))
Jika m_intbeginpos <> 0 maka 'jika ruang ditemukan
m_strhead = rtrim (ltrim (kiri (m_strdest, m_intbeginpos))))
Call Print ("[analyseyword ()]: Menangani ruang m_strhead =" + m_strhead)
m_strtail = rtrim (ltrim (kanan (m_strdest, len (m_strdest) - m_intbeginpos))))
Call Print ("[analyseyword ()]: Menangani ruang m_strtail =" + m_strtail)
m_strdest = m_strhead + "*" + m_strtail
kalau tidak
keluar
akhiri jika
lingkaran
m_strdest = ganti (m_strdest, "*", chr (32))
Call Print ("[analyseyword ()]: Setelah pemrosesan ruang, m_strdest =" + m_strdest)
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Pertama ganti kutipan tunggal dengan kutipan ganda
m_strdest = ganti (m_strdest, chr (39), chr (34))
'Tetapkan nilai awal untuk membuat loop pergi
m_intbeginpos = 1
m_intendpos = 1
m_strhead = ""
m_strtail = ""
do wilew m_intbeginpos <> 0 dan m_intendpos <> 0
'Jika kutipan ganda ditemukan, perhatikan posisi awal dan cari kutipan ganda berikutnya
M_INTBEGINPOS = Instr (m_strdest, chr (34))
Jika m_intbeginpos <> 0 maka 'jika kutipan pertama ditemukan
Call Print ("[analyseyword ()]: Lokasi di mana kutipan pertama muncul:" + cstr (m_intbeginpos)))
m_intendpos = instr (m_intbeginpos + 1, m_strdest, chr (34))
Jika m_intendpos <> 0 maka 'jika kutipan kedua ditemukan
Call Print ("[analyseyword ()]: Di mana kutipan kedua muncul:" + cstr (m_intendpos))
'Pisahkan seluruh string menjadi tiga paragraf dalam kutipan
Call Print ("[analyseyword ()]: Menangani kutipan m_strdest =" + m_strdest)
m_strhead = kiri (m_strdest, m_intbeginpos - 1)
Call Print ("[analyseyword ()]: Menangani kutipan m_strhead =" + m_strhead)
m_strmiddle = mid (m_strdest, m_intbeginpos + 1, m_intendpos - m_intbeginpos - 1)
Call Print ("[analyseyword ()]: Menangani kutipan m_strmiddle =" + m_strmiddle)
m_strtail = kanan (m_strdest, len (m_strdest) - m_intendpos)
Call Print ("[analyseyword ()]: m_strail =" + m_strtail)
'Jika ada tanda + dalam kutipan, itu akan diproses sebagai karakter dan untuk sementara diganti dengan karakter lain
m_strmiddle = ganti (m_strmiddle, "+", "|")
m_strdest = m_strhead + ganti (rtrim (ltrim (m_strmiddle)), chr (32), "#") + m_strtail
kalau tidak
keluar
akhiri jika
kalau tidak
keluar
akhiri jika
lingkaran
m_strdest = ganti (m_strdest, chr (34), "+")
Call Print ("[analyseyword ()]: Setelah memproses tanda kutip, m_strdest =" + m_strdest)
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Memecahkan masalah beberapa tanda plus, jika Anda menemukan beberapa tanda plus, Anda pikir itu adalah string, bukan karakter logis
m_strdest = ganti (m_strdest, "+++", "|||")
m_strdest = ganti (m_strdest, "++", "||")
Call Print ("[analyseyword ()]: Setelah memproses beberapa tanda minus, m_strdest = '" + m_strdest + "'")
'Perlakukan ruang di kedua sisi tanda plus
m_strdest = ganti (m_strdest, " +", " +")
m_strdest = ganti (m_strdest, "+", "+")
m_strdest = ganti (m_strdest, " +", " +")
Call Print ("[analyseyword ()]: Setelah memproses ruang di kedua sisi tanda minus m_strdest = '" + m_strdest + "'")
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Memecahkan masalah beberapa tanda minus, jika Anda menemukan beberapa tanda minus, Anda akan berpikir itu adalah string, bukan karakter logis
m_strdest = ganti (m_strdest, "---", "~~~~")
m_strdest = ganti (m_strdest, "-", "~~")
Call Print ("[analyseyword ()]: Setelah memproses beberapa tanda minus, m_strdest = '" + m_strdest + "'")
'Perlakukan ruang di kedua sisi tanda minus
m_strdest = ganti (m_strdest, " -", " -")
m_strdest = ganti (m_strdest, "-", "-")
m_strdest = ganti (m_strdest, " -", " -")
Call Print ("[analyseyword ()]: Setelah memproses ruang di kedua sisi tanda plus m_strdest = '" + m_strdest + "'")
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Jika len (m_strdest)> = 3 lalu
m_strhead = kiri (m_strdest, 1)
m_strmiddle = mid (m_strdest, 2, len (m_strdest) - 2)
m_strtail = kanan (m_strdest, 1)
jika m_strhead = "+" atau m_strhead = "-" lalu
m_strhead = ""
akhiri jika
jika m_strtail = "+" atau m_strtail = "-" lalu
m_strtail = ""
akhiri jika
m_strdest = m_strhead + m_strmiddle + m_strtail
akhiri jika
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
m_strdest = ganti (m_strdest, "-", "~~")
m_strdest = ganti (m_strdest, "++", "||")
m_strdest = ganti (m_strdest, chr (32), "@")
Analyseyword = m_strdest
Call Print ("[analyseyword ()]: Setelah semua pemrosesan selesai m_strdest = '" + m_strdest + "'")
fungsi akhir
%>
Prosedur tersimpan
/********************************************************/
/ * nama proc: up_parsewordsearch */
/ * *//
/ * Deskripsi: Pencarian Kata Kunci */
/ * *//
/ * Parameter: @A_STRCategoryID Kategori ID */
/ * @a_intposition Lokasi panggilan */
/ * @a_strparseWord mencari kata kunci */
/ * @a_introwcount membatasi jumlah maksimum catatan untuk mendapatkan */
/ * *//
/ * tanggal: 2000/6/28 */
/ * *//
/ * Penulis: LiUyunpeng */
/ * *//
/* sejarah: */
/********************************************************/
Jika ada (pilih * dari sysObjects di mana id = object_id ("up_parsewordsearch")))
Jatuhkan proc up_parsewordsearch
pergi
Buat Proc Up_ParseWordSearch @A_STRPARSEWORD VARCHAR (255),
@A_strcategoryId varchar (255),
@a_intposition Tinyint,
@a_introwcount int
sebagai
Deklarasi @M_STRSQLCondition Varchar (255) -Bagian bersyarat dari pernyataan SQL
Deklarasikan @M_STRSQLSELECT VARCHAR (255) -Bagian Pemilihan Pernyataan SQL
Deklarasikan @M_STRSQLCATEGORY VARCHAR (100) -Bagian Kategori dari Pernyataan SQL
/*Pertahankan bagian seleksi SQL berdasarkan lokasi panggilan*/
pilih @M_STRSQLSELECT
= kasing
When @A_intposition = 4 Lalu -Perpustakaan Produk
"Pilih ProductId, 'Judul' = ProductName, 'Deskripsi' = Left (Deskripsi, 100)"
+ "dari produk di mana"
When @A_intposition = 5 Lalu -Perpustakaan Peluang Bisnis
"Pilih id, judul, 'deskripsi' = kiri (konversi (varchar, konten), 100)"
+ "Dari BusinessChance di mana"
When @A_intposition = 6 Lalu -Perpustakaan Perusahaan
"Pilih Perusahaan, 'Judul' = CompanyName, 'Deskripsi' = Left (Deskripsi, 100)"
+ "dari perusahaan di mana"
akhir
/*Mempertahankan bagian klasifikasi SQL berdasarkan ID klasifikasi*/
SELECT @M_STRSQLCategory
= kasing
Saat @A_STRCATGORYID <> "0" Lalu "CategoryId Like '" + @A_strcategoryId + "%' dan"
kalau tidak ""
akhir
/*Tentukan bagian bersyarat SQL berdasarkan lokasi panggilan*/
Pilih @M_STRSQLCondition
= kasing
When @A_intposition = 4 -Produk
Lalu "(ProductName Like '%" + @A_StrParsEword + "%'"
+ "atau deskripsi seperti '%" + @a_strparseword + "%'"
+ "atau nama produsen seperti '%" + @a_strparseword + "%')"
Saat @A_IntPosition = 5 -Peluang Bisnis
Lalu "(judul seperti '%" + @A_STRPARSEWORD + "%'"
+ "atau kata kunci seperti '%" + @a_strparseword + "%')"
When @A_intposition = 6
Lalu "(CompanyName Like '%" + @A_StrParsEword + "%'"
+ "atau deskripsi '%" + @a_strparseword + "%')"
akhir
Setel RowCount @A_introwCount
exec (@m_strsqlselect + @m_strsqlcategory + @m_strsqlcondition)
Setel RowCount 0
pergi
Di atas adalah implementasi kode dari program pencarian di ASP dan prosedur tersimpan. Saya percaya setiap orang memiliki pemahaman tertentu. Jika Anda ingin mengetahui lebih banyak informasi teknis, silakan terus perhatikan saluran teknologi baru yang salah!