方法一:如果语句不复杂,可以使用UPDATE,INSERT,DELETE这几个关键字和 ; 号来一起分割试试。比如在字符串中查找 " ; INSERT"字符串的位置来分割。
方法二:将SQL语句中的;号用特殊符号如$或#号替换掉,在分割SQl语句执行时在替换回来!

解决方案 »

  1.   

    用语句和;区分总觉得不那么优雅,况且现在SQL已经不限于这几个了,也不知道;后面有几个空格或者换行
    用$或#也同样存在这个问题,值里面是不限制字符的,也有可能冲突
      

  2.   

    用一个状态变量,比如 TStatus = (Default, InQuote);
    然后用
    for i:=1 to length(str) 
    c:=str[i];
    newstr:=newstr+c;
    来遍历,
    当c=';'且status=default时,即获得一个分割的SQL;
    将newstr加入到tstrings里,
    清空newstr,继续遍历直到str尾端.
      

  3.   

    为什么要 分割SQL语句?
    SQL语句是怎么来的?谁产生的?
      

  4.   


    你应该问为什么要编程?为什么要用Delphi?
      

  5.   


    你应该问为什么要编程?为什么要用Delphi?什么人啊
    提问题 不交代清楚 前因后果,是大忌!SQL语句可能是 别的系统传过来的,也可能是本系统一个子模块产生的
    有截然不同的应对方法