c++ - 在 C++ 中格式化 SQL 查询

标签 c++ sql

我想知道是否可以在 C++ 中使用类似于 "sqlparse" module in Python 的东西格式化我的查询。你知道我能用什么吗?

很抱歉之前没有提供示例。 我想要这样的东西:

SELECT MEMB.NAME, MEMB.AGE, AGE.GROUP FROM MEMB, AGE WHERE MEMB.AGE = AGE.AGE

变成这样:

SELECT MEMB.NAME,
       MEMB.AGE,
       AGE.GROUP
FROM   MEMB,
       AGE
WHERE  MEMB.AGE = AGE.AGE

非常感谢。

最佳答案

您可以编写自己的 pretty-print 。在这种情况下,它不会有任何困难。只需替换如下内容:

"FROM" -> "\nFROM"
"WHERE" -> "\nWHERE"
"," -> ",\n\t"
"AND" -> "AND\n\t"
"OR" -> "OR\n\t"

等等

编辑:由于您不编写代码,因此这里是此功能的一个小版本。

#include <string>
using std::string; /* put these lines in the top of your file */

string replace(string a, string b, string c) {
    unsigned x;
    for(x = a.find(b); x != string::npos;) {
        a.erase(x, b.length());
    a.insert(x, c);
    }
    return a;
}




string formatSQL(string sql) {

    replace(sql, "FROM", "\nFROM");
    replace(sql, "WHERE", "\nWHERE");
    replace(sql, "," , ",\n\t");
    replace(sql, "AND", "AND\n\t");
    replace(sql, "OR", "OR\n\t");
}

所以调用 formatSql("SELECT MEMB.NAME, MEMB.AGE, AGE.GROUP FROM MEMB, AGE WHERE MEMB.AGE = AGE.AGE") 会给你想要的结果。

关于c++ - 在 C++ 中格式化 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5939613/

相关文章:

c++ - 无法在 Mac OS 上使用 Netbeans 7.0 编译 C++ 代码

c++ - 从 C++ 错误中的不同文件调用函数

php - 如何将varchar数据类型转换为datetime数据类型而不丢失数据

mysql - 如何使用另一个列表中的值更新一个列表中具有 id 的行

java - 无法使用 Spring Boot 将 ArrayList 中超过 2 个元素保存到 MySQL?

c++ - STL有hashmap数据结构吗?

c++ - (全局)静态变量会在程序结束时被销毁吗?

c++ - C++ 中的 Setter 和 getter

sql - 有没有办法将MapReduce作业的输出导入到SQL表中?

sql - 如何使用 BigQuery 显示自连接树层次结构表?