没有合适的资源?快使用搜索试试~ 我知道了~
asp中的引号规则,在asp中如何书写sql语句.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 119 浏览量
2022-11-26
18:57:28
上传
评论
收藏 660KB PDF 举报
温馨提示
试读
17页
...
资源推荐
资源详情
资源评论
在学习 ASP.NET 的过程中,很多同学在书写 SQL 字符串时都感到比较困难,总是发生各种各
样的错误,并且对其中的双引号、单引号和连接运算符&感到非常难以掌握。本文就从头开
始系统讲述一下如何书写正确的 SQL 字符串,并给出一个比较有效的调试方法。
1 双引号、单引号和连接运算符&
首先声明:这里说的符号是英文状态下的符号,也可以说是语法中用到的符号。
因为在书写 SQL 语句时,最常见的困惑就是对其中的双引号、单引号和连接运算符&的理解。
下面就从基础讲起。
(1)关于双引号
在 ASP 中,用到字符串常数时两边要加上双引号 " ,表示其中是一个字符串,如下面都是
字符串常数:
"abcdefg"
"伟大的祖国"
"101"
"2003-10-5"
大家可能会想,101 是一个数字啊,2003-10-5 是一个日期啊。但是,只要在两边加上了双
引号,那么它就是一个字符串,不管其中的内容是数字还是英文字母还是中文。
(2)关于单引号
有同学可能会想了,你现在用双引号表示其中是一个字符串,但是假如在字符串中间也用到
了双引号,那么岂不就会出现这样的情况:
"ab"cde"fg"
这样显然就会引起别人的误解,到底第一个双引号和第几个双引号配套呢?因为 ASP 规定,
当出现双引号嵌套时,可以将内层的双引号转变为单引号 ' 或者转变两个连续的双引号 ""。
按照该规定,上面的字符串应该改写为如下形式:
"ab'cde'fg"
"ab""cde""fg"
说明:
1.绝大部分情况下,发生引号嵌套时,大家可以将内层引号改成单引号,即第一种形式。
2.特殊情况下,需要使用第二种形式。因为这两者有一定区别,在使用他们时,第1 种形
式中间就是一个单引号,而第二种形式中间其实是一个双引号,大家可以利用 Response.Write
语句将它们输出到页面上比较结果。
不过,需要说明的是,这里说的引号嵌套都是针对英文状态下的字符说的,如果在字符串中
间有中文状态下的引号,则不必替换。如下面的字符串都是合法的:
"伟大的“祖国”万岁"
"伟大的“祖国万岁"
这也提示我们,在处理客户提交的数据时,如果客户输入的都是中文字符,那么,不管输入
了什么,都可以当作一个字符串。但是,如果客户输入的是英文,那么就可能会发生字符串
嵌套的情况。
(3)连接运算符&
在使用字符串时,我们经常需要将两个或多个字符串连接成一个大的字符串,这时就需要用
到连接运算符&(此时也可以用+,不过一般用&),如下:
"abcd" & "efg"
"abcd" & "efg" & "hijk"
对于上面两个表达式,执行连接运算后结果如下:
"abcdefg"
"abcdefghijk"
我们来看一下其中的连接运算原理,以第一个表达式为例,它实际上是先将两个双引号之间
的内容 abcd 去出来,然后再将第二个字符串之中的内容 efg 取出来,将它们连到一起变成
abcdefg。当然,它们的结果自然还是字符串常数,所以,仍然要在两边添加双引号,表示
中间的是字符串常数,因此就变成了最后的"abcdefg"。
对于第二个表达式,本质上和上面一样,只不过是先将第一个字符串和第二个字符串连接成
一个字符串,然后再将它们的结果和第三个字符串连接成最后的字符串。
说明:
1.有的同学想出了一个形式上的理解方法,说是将中间的" & "擦去,然后连到一起就行了。
结果是一样的,不过真正的原理还是以上面为准。
2.对于"abcd" & "efg",在 ASP 中也可以将&两边的空格去掉,成为"abcd"&"efg"。不过,推
荐加上空格,这样程序会清楚些。
3.有时候,表达式中可能有更多的连接运算符。运算过程也是一样的,从左到右依次进行
即可。
上面的例子比较简单,如果中间也有单引号,可能会变得复杂些。不过你只要记住,不管其
中有无单引号,一个字符串两边的双引号之间的内容都是这个字符串的内容,连接时都要取
出来,你只要将其中的单引号当成普通的字符即可。如下面的例子:
"ab'cd'efg" & "hi'jk'lmn"
执行连接运算后,结果如下:
"ab'cd'efghi'jk'lmn"
至于具体原理仿照上面的讲解即可。将第一个字符串中的内容 ab'cd'efg 和第二个字符串中
的内容 hi'jk'lmn 取出来连到一起,变成 ab'cd'efghi'jk'lmn,然后在两边加上双引号,表示这
是一个字符串常数"ab'cd'efghi'jk'lmn"。
好,现在相信大家对于双引号、单引号和连接运算符的概念已经比较清楚了,可能还有的同
学会进一步提出,上面的例子("abcd" & "efg")好像意义不大啊,这个式子直接写成"abcdefg",
何苦要将其分成两部分,中间再加个连接符,这不多此一举吗?
这个想法其实是对的,在实际使用中,尽管有时也用&连接两个字符串常数,但是更多的时
候是将一个字符串常数和一个字符串变量连接到一起,或者是将两个字符串变量连接到一起。
如下:
"ab'cd'efg" & strTemp
大家可以注意到,上面的表达式中,第一项是一个字符串常数,第二项是一个字符串变量。
那么它们是怎么执行连接运算呢?其实很简单:
假如 strTemp="hi'jk'lmn",那么将其代入到上面表达式,那么上面的表达式就变成了
"ab'cd'efg" & "hi'jk'lmn"
后面的运算原理和前面的讲述也就一样了,最后结果为"ab'cd'efghi'jk'lmn"
还有人喜欢写成这样:
strSql="ab'cd'efg"
strSql=strSql & strTemp
这是两条语句,执行完毕后其实和上面的结果是一样的。它的过程是:在第一句中将
"ab'cd'efg"保存到变量 strSql 中,在第二句中从变量中取出字符串,再和字符串变量strTemp
连接到一起,重新保存到变量 strSql 中。假如 strTemp="hi'jk'lmn",那么执行完毕后变量 strSql
中的内容为"ab'cd'efghi'jk'lmn"。
(4)一个常犯的错误:将字符串变量写到了字符串常数中
这里要特别强调一个常犯的错误,就是将字符串变量直接写到了字符串常数中,如对于上面
的表达式,个别同学写成了
"ab'cd'efgstrTemp"
他认为这就是将字符串常数"ab'cd'efg"和字符串变量 strTemp 连接到一起了。可是,除了他
自己,别人谁能看出 strTemp 是一个字符串变量呢?
其实在这个错误的写法中,strTemp 这几个字符和前面的 ab'cd'efg 字符没有任何本质区别。
系统不会将其当作字符串变量,而只会把它们看作是这个大字符串的一部分内容。或者说,
这就是一个字符串常数,其中的内容是 ab'cd'efgstrTemp。
因此,大家一定要记住,字符串变量不能直接写到字符串常数中。在希望将一个字符串常数
和一个字符串变量连接到一起时,一定要使用&(或+)将它们连接到一起。如:
"ab'cd'efg" & strTemp
当然,如果希望将两个字符串变量连接到一起,也是一样的,如:
strTemp1 & strTemp2
还有,有时会将几个字符串常数和几个字符串变量连接到一起,如:
"ab'cd'efg" & strTemp & "hi'jk'lmn"
它们的运算原理和过程都一样,将字符串变量的内容代入到表达式中,然后执行连接运算。
2 书写正确的 SQL 字符串
深刻掌握上面一节后,其实就可以比较容易的书写SQL 字符串了。因为本质上,SQL 字符串
也就是一个普通的字符串,不管使用字符串常数还是字符串变量,总之最后你要将它们连接
成一个符合一定格式要求的字符串而已。
首先强调:SQL 语言有如下规定,在 SQL 字符串中
剩余16页未读,继续阅读
资源评论
不吃鸳鸯锅
- 粉丝: 8325
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功