jinshizuofei

在使用sql语句的时候,我们经常会遇到使用字符串变量的时候,比如说,查询,str:=\'select *  from Table where Name=\'\'\'+Name+\'\'\'\';在.net里面使用sqlparameter,就不需要自己手动转换了,但是在delphi中,好像是没有那种用法,组织sql语句时,怎么把拼接的字符串转成符合规范的sql语句,这就是个问题了。

就像上面写那句一样,我要想把name的值传到sql语句中间,还要带上单引号,形如str:=\'select *  from Table where Name=\'JueJiang‘\',就要考虑delphi中单引号的用法了。

首先,单引号必须是成对的,运行之后可能会出现’123\'\'之类的情况,但是编译期写成str := \'123\'\'肯定是不行的。

第二,单引号的意义,成对的单引号,是标准的字符串赋值格式。在成对单引号之间的单引号,每两个相当于一个转换之后的单引号字符。还是举个例子说明一下吧。

    str := \'\'\'\';
    str1 := \'123\'\'\';
    str2 := \'123\'+\'\';


-------------------------------------
  显示结果:
str:\' str1:123\' str2:123

去掉指定字符串格式的两个单引号,中间的部分,两个单引号代表一个\'字符,加号运算符的效果相当于去掉中间的两个单引号。

使用变量也是一样:

    str3 := \'123\'+Name;
    str4 := \'123\'\'\'+Name;
    str5 := \'123\'\'\'+Name+\'\';
    str6 := \'123\'\'\'+Name+\'\'\'\';

-------------------------------------
显示结果:
    str3:123456
    str4:123\'456 
    str5:123\'456
    str6:123\'456\'

通常sql语句中的拼接用的都是最后的一种情况。

补充一下,双引号,在delphi没有什么特殊的含义,就是普通的字符

  str7 := \'"123"\';

-------------------------------------
显示结果:
  str7:"123"

最后,还有sql语句的换行,换行就相当于是两个字符串的拼接了,需要使用加号连接起来。

  str:=\'select *  from Table \'+
        \'where Name=\'\'\'+Name+\'\'\'\';

 

 

分类:

技术点:

相关文章: