`
sogo6
  • 浏览: 113765 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用正则表达式来分割sql语句!

    博客分类:
  • C++
阅读更多
int CSQLMake::SplitSql(std::string &strSql, std::vector<std::string> &vctSql)
{
    int iRet = 0;
    boost::regex regEx("\\(select[\\w\\s='<>!#,.@]*\\)");
    std::string::const_iterator start, end;

    boost::match_results<std::string::const_iterator> what; 
    boost::match_flag_type flags = boost::match_default;

    int iCount = -1;
    while (boost::regex_search(strSql, what, regEx, flags))
    {
        std::string strTemp(what[0].first, what[0].second);
        vctSql.push_back(strTemp);
        iCount ++;

        std::string strFlag = "@@" + toString(iCount);

        std::string::size_type stPos = strSql.find(what[0]);
        std::string strLeft = strSql.substr(0, stPos);
        std::string strRight = strSql.substr(stPos + (what[0].second - what[0].first));

        strSql = strLeft + strFlag + strRight;

        flags |= boost::match_prev_avail;
        flags |= boost::match_not_bob;
    }

    vctSql.push_back(strSql);
    return iRet;
}
分享到:
评论

相关推荐

    Oracle数据库正则表达式

    使用正则表达式可以编写简洁、强大的 SQL 语句,提高数据处理的效率和灵活性。熟练使用正则表达式可以帮助用户快速搜索、替换和验证数据,并提供高度的灵活性。 在 Oracle 数据库中,正则表达式的应用非常广泛,...

    基于Java实现正则表达式提取关键字并插入数据库

    在本项目中,我们主要探讨如何使用Java编程语言来实现正则表达式的关键字提取,并将这些关键字存储到MySQL数据库中。这是一个常见的任务,尤其是在数据分析、日志处理或信息提取等场景下。以下是对这个过程的详细...

    jstl文档和正则表达式文档

    在Java中,正则表达式主要通过`java.util.regex`包来实现。 1. **基础符号**:`.`表示任意字符,`^`表示行首,`$`表示行尾,`*`表示前一个字符重复零次或多次,`+`表示至少一次,`?`表示零次或一次。 2. **范围...

    Oracle数据库正则表达式使用场景代码实例

    通过正则表达式,可以实现对文本数据的模式识别、替换、分割等多种处理功能。在Oracle数据库中,正则表达式一般与REGEXP_LIKE函数结合使用,该函数用于实现正则表达式的匹配功能。 首先,\d是正则表达式中的一个...

    解析sql文件并且生成Javabean的工具类

    在这个工具中,作者可能运用了正则表达式来匹配和解析SQL语句的结构,从而提取出字段名和数据类型等信息。正则表达式是一种强大的文本处理工具,能高效地查找、替换和分割字符串。虽然作者认为这个工具的实用性可能...

    用sql语句获取文件扩展名

    - **正则表达式**:某些SQL版本支持正则表达式,可以使用正则表达式来匹配并提取扩展名。 ### 总结 通过本文介绍的SQL技巧,我们可以高效地从文件名中提取出扩展名,这对于数据库管理和数据处理来说是非常实用的...

    C#中实现一次执行多条带GO的sql语句实例

    首先,我们来看`ExecuteSqlWithGo`方法,这个方法通过正则表达式将带有`GO`的SQL语句分割成多个单独的SQL命令。`Regex.Split(sql.Trim(), "\r\n\\s*go", RegexOptions.IgnoreCase)`这一行代码将字符串按`\r\n`(换行...

    Java的2本经典

    3. **模式匹配**:查找、替换、分割字符串,以及在Java中使用正则表达式的各种方法。 4. **高级特性**:预查(\Q...\E)、环视((?=...)、(?!...)、(?)、(?&lt;!...))等高级正则表达式技巧。 5. **正则表达式性能...

    数值运算字符串转换成数字.zip

    3. **正则表达式**:可以使用正则表达式来解析字符串,提取数字和运算符。正则表达式是一种强大的文本匹配工具,可以用来分割、替换或匹配字符串中的特定模式。不过,大多数SQL方言并不支持复杂的正则表达式操作,...

    基于Python的django 正则 个人笔记

    3. **ORM**:Django的ORM允许开发者使用Python对象(如类)来操作数据库,而无需编写SQL语句,大大简化了数据库操作。 4. **表单处理**:Django提供了一套强大的表单处理机制,包括自动生成HTML表单、验证用户输入...

    本文目标有关于oracle中sql基础练习

    13. **存储过程(Stored Procedures)**:预编译的SQL语句集合,可以接受参数,执行多次,提高性能并封装业务逻辑。 14. **触发器(Trigger)**:在特定数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行的SQL...

    北京利康时代笔试题面试题

    在这个例子中,程序读取文件,然后使用正则表达式分割单词,通过`Map`来存储每个单词出现的次数。`Map.containsKey()`方法检查`Map`中是否存在指定的键(单词)。为了不区分单词的大小写,可以先将字符串转换为小写...

    SQL入门与高级使用

    10. 正则表达式:在WHERE子句中使用正则表达式进行复杂的数据匹配。 三、SQL优化 1. 查询优化:理解查询执行计划,识别和解决性能瓶颈。 2. 索引优化:合理设计和使用索引,提高查询效率。 3. 数据库设计:遵循范式...

    java自动化之自动化框架项目(第五天-解析并执行初始化sql)代码

    Java中可以使用`BufferedReader`或`InputStreamReader`读取文件内容,再通过`StringTokenizer`或正则表达式分割SQL语句。 其次,执行初始化SQL通常是测试环境设置的一部分,用于创建数据库表结构、插入初始数据等。...

    利用LEX,YACC实现SQL编译器

    **LEX(词法分析器生成器)**:LEX是一种基于正则表达式的工具,它能够将源代码转换成一系列的词法单元,即识别并分类出源代码中的关键字、标识符、常量等基本元素。在SQL编译器的构建中,LEX负责识别SQL语句中的...

    Java 核心技术-卷 2

    正则表达式可以用于文本的搜索、替换和分割,是处理复杂字符串问题的强大工具。 4. **网络编程**:Java的java.net包提供了网络编程的基础组件,如Socket和ServerSocket类用于TCP连接,DatagramSocket和...

    mysql语句格式化工具(php)

    同时,PHP的正则表达式功能也可能被用到,以便更精确地匹配和分割SQL中的不同元素。 使用这样的工具时,用户通常只需将待格式化的SQL语句粘贴到界面的输入框中,然后点击“格式化”按钮,工具就会自动完成格式化...

    北京智融时代信息技术有限公司.pdf_python面试

    在Python中,我们可以使用`re`模块进行正则表达式匹配。针对给定的邮箱格式,可以编写如下的正则表达式: ```python import re pattern = r'^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$' ``` 这个正则...

    lex和yacc构建的SQL分析器

    1. **定义词法规则**:编写`flex`配置文件,定义各种SQL关键字、操作符和常量的正则表达式,以及它们如何转换为词法单元。 2. **定义语法规则**:编写`bison`配置文件,定义SQL语句的BNF(巴科斯范式)或EBNF(扩展...

Global site tag (gtag.js) - Google Analytics