【发布时间】:2021-01-29 08:03:27
【问题描述】:
我正在尝试使用 node.js 12 执行从 ibm db2 到 ibm watson 助手的查询。下面您可以看到我正在使用的代码,它适用于函数 fetchHSCode(),其中从数据库中检索到的值是整数。但是对于 fetchName() 它不起作用,因为值是 varchar 格式。
得到的错误是
SyntaxError: Unexpected token '?'\n
我在编写查询时遇到问题
'SELECT DISTINCT "Commodity", "Commodity_Code" FROM "PKD20375"."TRADES" WHERE "Commodity" LIKE '%?%'; '
请注意,运行查询需要表列和表名之间的双引号 ("")。不使用双引号就不行。
var ibmdb = require('ibm_db');
// Retrieve HS code information
function fetchHSCode(dsn, hscode) {
try {
var conn = ibmdb.openSync(dsn);
var data = conn.querySync('SELECT DISTINCT "Commodity_Code", "Commodity" FROM "PKD20375"."TRADES" WHERE "Commodity_Code"=?;', [hscode]);
conn.closeSync();
var resString = "";
for(let i = 0; i < data.length; i++) {
resString += data[i]['Commodity'] + "\n";
}
// Return both generated string and data
return {
result: resString, data: data, input: hscode
};
} catch (e) {
return {
dberror: e
}
}
}
// Retrieve product from name
function fetchName(dsn, productName) {
try {
var conn = ibmdb.openSync(dsn);
var data = conn.querySync('SELECT DISTINCT "Commodity", "Commodity_Code" FROM "PKD20375"."TRADES" WHERE "Commodity" LIKE '%?%'; ', [productName]);
conn.closeSync();
var resString = "";
for(let i = 0; i < data.length; i++) {
resString += data[i]['Commodity'] + "\n";
}
// Return both generated string and data
return {
result: resString, data: data, input: productName
};
} catch (e) {
return {
dberror: e
}
}
}
【问题讨论】:
-
你的意思是你需要转义单引号?
'\'%?%\''?