我粘貼你的代碼中Closure Compiler和所使用的這給了沒有任何錯誤,所以語法是正確的。生成的代碼是:
document.f.SQL.value = "(" + document.f.SQL.value + a[i] + " >= '" + document.f[a[i] + "_A"].value + "' AND " + a[i] + " <= '" + document.f[a[i] + "_B"].value + ") or DATEADD" + "(" + "dd, 0, DATEDIFF" + "(" + "dd, 0," + a[i] + ")) = '" + document.f[a[i]].value + "'";
我用這個選項:
儘量避免這種複雜的線條。利用變量。用下面的方法可以得到相同的結果:
var old = document.f.SQL.value + a[i];
var sql_a = document.f[ a[i] + "_A" ].value;
var sql_b = document.f[ a[i] + "_B" ].value;
var whatever = document.f[ a[i] ].value;
// (old) >= 'sql_a' AND
var sql = "(" + old + ") >= '" + sql_a + "' AND ";
// A <= 'sql_b')
sql += a[i] + " <= '" + sql_b + "') "
// or DATEADD(dd, 0, DATEDIFF(dd, 0, A)) = 'whatever'
sql += "or DATEADD(dd, 0, DATEDIFF(dd, 0, " + a[i] + ")) = '" + whatever + "';
document.f.SQL.value = sql;
問題是,試着將字符串分成較小的部分。我沒有在上面的小部分分割查詢,這取決於你。
沒有語法錯誤,但沒有辦法知道代碼是否工作。你沒有告訴我們你在做什麼。 – 0x499602D2
如果你試圖描述你想要你的代碼做什麼,它會有所幫助。 –
這是我嘗試在javascript中獲取字符串的查詢,並且粘貼的代碼屬於where子句SELECT CH_INSERT_DATE FROM CMS_HITLIST WHERE(CH_INSERT_DATE> ='2011-09-22'AND CH_INSERT_DATE <='2011-09-22')或DATEADD(dd,0,DATEDIFF(dd,0,CH_INSERT_DATE))='2011-09-22' –