技巧 3、資料庫搜尋技巧
1082
在資料庫搜尋中,如果我們只使用等於符號搜尋“Pro”是無法提取出那些能夠匹配“ASP Pro”的記錄的。下面我們要介紹的是如何使用SQL的LIKE操作符實現部分文本搜尋。
問:
從資料庫提取記錄集時,是否有可能提取那些包含比我所指定的文本更多內容的記錄,且不對搜尋文本的出現位置有具體要求?
例如:
StrName = 'Direct'
RSShops = Server.CreateObject("ADODB.Recordset")
strSql = "SELECT * FROM Shops WHERE Name =
'" & StrName & "'
是否可以提取出商店名字中包含“direct”單詞的記錄集?
答:
不要在SQL命令中使用等於(“=”)操作符,而是改用LIKE操作符。
要提取出那些名字中包含“direct”的記錄,可以使用下面這個查詢命令:
SELECT * FROM Shops WHERE Name LIKE '%direct%'
請按照這裡的代碼修改實際使用的查詢。
4、數值顯示格式化
對於VB程式員來說,ASP中一個非常令人失望的改動是VBScript中不再有Format函數。那麼,如何格式化數字使得它不再以預設的格式顯示?比如,將數字顯示為百分數、貨幣金額或者加上小數預留位置。下面的代碼幫你解決這個問題,告訴你如何通過用來取代VB Format的FormatXXXX函數來格式化輸出。
問:
在我開發的應用中,某個頁面要顯示一些####.####格式的數字。在ASP中如何才能實現?
答:
使用VBScript的FormatNumber函數,該函數能夠返回格式化的數字運算式。文法如下:
FormatNumber(Expression [,NumDigitsAfterDecimal ][,IncludeLeadingDigit
][,UseParensForNegativeNumbers ][,GroupDigits]]]])
例如,FormatNumber("123.45",4)將返回123.4500。
請參考http://msdn.microsoft.com/scripting的VBScript協助獲得更多資訊。
5、SQL命令中的引號處理
雖然用VBScript代碼構造的SQL命令本身沒有問題,但是由於使用者輸入的表單資料中包含了單引號或雙引號,本來合法的SQL語句不再合法。相信有不少讀者已經遇到過這個問題。下面我們要介紹的就是如何解決這類問題。
問:
我有一個關於SQL Server更新、插入記錄命令的問題。我想用帶有一個或多個引號的字串來更新資料庫,SQL將字串中的引號看成文法符號並提示錯誤。我應該怎麼辦呢?是否有其它的字串分隔符號?我已經試過雙引號、[]、{}等,但都沒有用。
答:
在執行SQL命令之前,應當把所有字元資料中的單引號用兩個單引號替代。
也就是說,如果SQL命令中出現了帶引號的字串(比如使用者的名字為O'Brian),就會出現問題:
Update Table Set NameField = 'O'Brian'
要解決問題,必須把字串中的單引號轉換成兩個單引號:
Update Table Set NameField = 'O''Brian'
可以利用Replace函數實現這種轉換:
strName = Replace(strName, "'" , "''" )