2015-11-11 20 views
-1

在Python中,可以使用「」」包長MySQL的語句。例如,方便的方式來包裹長的SQL語句在JavaScript

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); 
}); 

是否有某種JavaScript的等效Python的"""串封裝的嗎?如果沒有,是什麼在JavaScript封裝長MySQL的字符串聲明瞭一些最佳做法?

我正在使用node.js restify客戶端。

+5

可能重複[在JavaScript中創建多行字符串](http://stackoverflow.com/questions/805107/creating-multiline-strings-in-javascript) –

回答

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)` 
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

在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肖爾茨

就個人而言,我不喜歡使用\用於續行(使用任何語言)。使用+不會在字符串中引入不必要的空格。

希望這會有所幫助。

1

對於未來大SQL statments,一個技巧是使用功能或procedures在MySQL中,然後調用它的一行:如果你正在使用

var sql = select * from getEmployee(); // function getEmployee returns the query