#c #sql
Вопрос:
Мне было интересно, могу ли я использовать что-то в C , похожее на модуль «sqlparse» в 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
Большое спасибо.
Комментарии:
1. Для тех из нас, кто не знает, что такое «sqlparse», — отформатируйте его каким образом? Пожалуйста, приведите пример.
2. Хм, тогда почему бы просто не написать это так? Зачем вам нужен инструмент? Я бы подумал, что клавиша ввода и пробел-это все, что вам нужно. Наверное, я упускаю суть вопроса.
3. Ну, я не хочу писать какую-либо функцию, которая делает это. Во-первых, потому что код не мой, а во-вторых, потому что я не пишу код на c . Мне просто нужна функция, которая делает это, например, метод форматирования в модуле, о котором я упоминал ранее.
Ответ №1:
Вы можете написать свой собственный симпатичный принтер. В таком случае, это не составит никакого труда. Просто замените такие вещи, как следующее:
"FROM" -> "nFROM"
"WHERE" -> "nWHERE"
"," -> ",nt"
"AND" -> "ANDnt"
"OR" -> "ORnt"
и т.д.
Правка: поскольку вы не кодируете, вот небольшая версия этой функции.
#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, "," , ",nt");
replace(sql, "AND", "ANDnt");
replace(sql, "OR", "ORnt");
}
Так что звонок formatSql("SELECT MEMB.NAME, MEMB.AGE, AGE.GROUP FROM MEMB, AGE WHERE MEMB.AGE = AGE.AGE")
дает вам желаемый результат.