| 3、数据库搜索技巧 |
|
| 在数据库搜索中,如果我们只使用等于符号搜索“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帮助获得更多信息。 |
|
| 例如,FormatNumber("123.45",4)将返回123.4500 |
|
| 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, "'" , "''" ) |