采用ado 
sql.add('select mpgg=bh+'X'+bk from plcs_t ') ;
mpgg字段由两个bh和bk用X连接而成,X的引号的打法好像有问题,我总弄不明白字符在sql中的用法,请说明正确的写法。如bh=‘12’,bk=‘150’,mpgg的结果就应为字符‘12X150’

解决方案 »

  1.   

    sql.add('select mpgg=bh+''X''+bk from plcs_t ') ;
    在delphi中''中如果想出现',则用''来表示
    如:print('select mpgg=bh+''X''+bk from plcs_t ');
    会显示
    select mpgg=bh+'X'+bk from plcs_t
      

  2.   

    在字符串两加单引号。对于本来说属于字符串的每个单引号,用两个代替。字符串 AB'CD   要写成  'AB''CD'以上两条是在DELPHI中使用单引号的原则。如果字符串是要提交给SQL的,因为也用单引号做分隔符,提交给它的字符串中的个单引号也要用两个来代替。所以如果要将字符串 AB'CD 提交给 SQL 则要写成 ''AB''''CD''如要给在表 Table1 中添加一条记录 AB'CDDELPHI中要写成这样ADOQuery.SQL.Add('insert into Table1(Field1) values(''AB''''CD'')');
      

  3.   

    如要给在表 Table1 中添加一条记录 AB'CDDELPHI中要写成这样ADOQuery.SQL.Add('insert into Table1(Field1) values(''AB''''CD'')');中间是3个',就ok了
      

  4.   

    楼上的,不是3个是4吧如果是 3 个连DELPHI编译器也过不了,Delphi,SQL 中的字符中的 单引号个数总是偶数个。
      

  5.   

    sql.add('select mpgg=bh+'+''''+'X'+''''+'+bk from plcs_t ') ;
      

  6.   

    我认为是这样
    sql.add('select mpgg=bh'+''''+'X'+''''+'bk from plcs_t ') ;
      

  7.   

    在''中''相当于'
    例如'A=''m''' 表示字符串 A='m'
      

  8.   

    为什么一定要用引号这个东西呢?
    用quotedstr()不就可以呢吗?完全没有写一串引号的必要!
      

  9.   

    还有一种个人觉得比较好
    var
      Str1,Str2: String;
      sql: String;
      index: integer;
    begin
      Str1 := 'a'; Str2 := 'b'; index := 4;
      sql := format('select * from test where field1 = ''%S'' and field2 = ''%2'' and field3 = %d',[Str1,Str2,index]);
      Query1.sql.add(sql);  
    end;