在python中,可以使用"""包装长MySQL语句。例如,
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
但是,如果我在javascript中尝试相同的操作,则会出现语法错误。
connection.query("""CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
, function (err, rows, fields) {
if (err) throw err;
res.send(rows);
});
对于python' s """
字符串封装,是否存在某种javascript等价物?如果不是,在javascript中封装长MySQL字符串语句的最佳实践是什么?
我正在使用node.js restify client。
答案 0 :(得分:2)
在JavaScript中处理长字符串:
var sql = "CREATE TABLE EMPLOYEE (" +
" FIRST_NAME CHAR(20) NOT NULL," +
" LAST_NAME CHAR(20)," +
" AGE INT," +
" SEX CHAR(1)," +
" INCOME FLOAT )";
Python的三重引号很棒!不幸的是,在JavaScript中,您只有两个选择:
+
基于串联,如上所述\
基于@Nina Scholz 就我个人而言,我不喜欢使用\
进行换行(使用任何语言)。使用+
也不会在字符串中引入不必要的空格。
希望这有帮助。
答案 1 :(得分:1)
您可以在行尾使用反斜杠\
将字符串分布在多行上。
var sql = "CREATE TABLE EMPLOYEE ( \
FIRST_NAME CHAR(20) NOT NULL, \
LAST_NAME CHAR(20), \
AGE INT, \
SEX CHAR(1), \
INCOME FLOAT )";
document.write(sql);

答案 2 :(得分:1)
对于未来的大型SQL
声明,一个提示是在MySQL中使用函数或procedures,然后在一行中调用它:
var sql = select * from getEmployee(); // function getEmployee returns the query
答案 3 :(得分:1)
如果您使用支持ES6的node.js,这应该不是问题。 ES6 javascript现在支持使用以下语法的多行字符串。
sql = `CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )`
答案 4 :(得分:1)
对于ES6,@ user781486指出的多行语法确实是可行的方法。
我还想提到我的最爱,即使用字符串数组(即。)来准备多行字符串。
var sql = [
"CREATE TABLE EMPLOYEE (",
" FIRST_NAME CHAR(20) NOT NULL,",
" LAST_NAME CHAR(20),",
" AGE INT,",
" SEX CHAR(1),",
" INCOME FLOAT )"
].join("\n");
您的里程可能会有所不同。