Chinaunix首页 | 论坛 | 博客
  • 博客访问: 425758
  • 博文数量: 116
  • 博客积分: 7087
  • 博客等级: 少将
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-19 23:32
文章分类

全部博文(116)

文章存档

2012年(1)

2011年(2)

2010年(10)

2009年(21)

2008年(18)

2007年(12)

2006年(21)

2005年(31)

我的朋友

分类: DB2/Informix

2005-11-11 13:14:30

单引号通常用于引用一个字符串,如果字符串中还有单引号,那么写起程序来就显得特别麻烦.

今天在研究xalan的sql extension的时候,需要动态构造sql 语句,其中用到插入单引号的功能.一开始,就被单引号,双引号搞晕了,无论怎么匹配,都提示我的xslt文件格式错误.

后来上网查了一下资料,得出了以下结果.

在xml中,属性的内容应该由双引号,或者单引号括起来.如果使用了单引号来引用一段属性的值,那么在单引号的内部就不允许再次出现单引号了。否则就会报解析错误。

例如:

a='abc' efg'  错误

a=" abc'efg"  正确

以上情况比较简单,只要换一下最外面的引号类型,使之和内部的引号类型错开,就能解决问题。

下面看一种比较复杂的情况。即在属性中使用了xpath函数。

b='concat($a,"abc")'

以上函数的功能是将变量a和字符串"abc"连接在一起。内部采用双引号,外部采用单引号,而且都是成对使用,解析起来没有问题。如果现在要求将变量a和字符串"ab'c"连接在一起。那么刚才这种写法就有问题了。

b='concat($a,"ab'c")'   错误

原因很简单,因为解析起来,单引号的匹配会有问题。

正确的写法应该是

b='concat($a,"ab'c")' 

解决了这个问题,顺便又查了一下在sql里面的单引号问题。

如果插入一条记录,记录值中包含了单引号,那么应该怎么处理?

比如说 insert into a values ('ab'c');

这种写法肯定有问题。

那么insert into a values ("ab'c");也是不对。

真正有用的是:

insert into a values ('ab''c');

这里用两个单引号表示一个。

阅读(3346) | 评论(0) | 转发(0) |
0

上一篇:多线程的研究

下一篇:server and client

给主人留下些什么吧!~~