mysql - 如何删除格式化 mysql 查询中的反引号?

标签 mysql node.js npm xlsx

好吧,我已经使用 npm 包“xlsx”在 excel 中提取了一些值,并且我想使用格式化结果运行 MySql 查询。

Excel提取

    let wb= xlsx.readFile(filePath);         //GET WORKBOOK
    let ws= wb.Sheets[wb.SheetNames[0]];     //SELECT THE FIRST SHEET IN THE ARRAY
    let data= xlsx.utils.sheet_to_json(ws);  //CONVERT DATA TO JSON OBJECT
    let s ='';                               //CREATE VARIABLE TO HOLD FORMATTED STRING
    for(let i=0; i<data.length; i++){
        s+= "'" + data[i].id +"',";       //FORMAT OBJECT TO STRING
    }
    let fullString= s.substr(0, s.length-1); //STORE FORMATED STRING IN VARIABLE REMOVING FINAL COMMA (,)

格式化字符串如下所示:

'2019-0027178','2019-0027179','2019-0027180','2019-0027181','2019-0027182','2019-0027183'

MySql 查询如下:

SELECT name, email, phone FROM persons WHERE id IN (?),
[fullString]

预期结果:

包含请求信息的 json 对象,如下所示:

[{name: "John", email: "john.doe@email.com", phone: "123456789"}, ... ]

实际结果:

像这样的空数组:

[]

调查与思考

我发现反引号被添加到查询字符串中,如下所示:

... WHERE id IN (`'2019-0027178','2019-0027179','2019-0027180','2019-0027181','2019-0027182','2019-0027183'`)

实际主要问题:

我做错了什么或者有正确的方法吗?

编辑!

所以对于一个问号即。 ... WHERE id in (?),我得到了如上所述的空对象。但对于两个问号即。 ... WHERE id IN (??),我收到此错误:

{
    "code": "ER_BAD_FIELD_ERROR",
    "errno": 1054,
    "sqlMessage": "Unknown column ''2019-0027178','2019-0027179','2019-0027180','2019-0027181','2019-0027182','2019-0027183' in 'where clause'",
    "sqlState": "42S22",
    "index": 0,
    "sql": "SELECT name, email, phone FROM persons WHERE id IN (`'2019-0027178','2019-0027179','2019-0027180','2019-0027181','2019-0027182','2019-0027183'`)"
}

最佳答案

假设您有一个名为 personfilter 的表,其中包含列 key 和 personid。 然后您生成一个唯一的 key 。例如 27。那么以下代码将执行您想要的操作:

INSERT INTO personfilter(key,personid)
  values
     (27, '2019-0027178'),
     (27, '2019-0027179'),
     (27, '2019-0027180'),
     (27, '2019-0027181'),
     (27, '2019-0027182'),
     (27, '2019-0027183')

然后你可以执行以下选择

SELECT name, email, phone 
FROM persons
JOIN personfilter on personfilter.key = 27 and personfilter.personid = persons.id

关于mysql - 如何删除格式化 mysql 查询中的反引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58664336/

相关文章:

node.js - faker 可以用来创建假的 JSON 数据吗

javascript - 无法弄清楚为什么我不断收到 [ERR_HTTP_HEADERS_SENT] 错误

javascript - 无法运行我的 React 应用程序,出现一些错误

php - 无法将长数据发送到 mysql MEDIUMTEXT 或 MEDIUMBLOB

php - 用于 PHP 的 jTables 过滤

c# - SQL C#,命令(查询)执行两次

node.js - 更改 NPM 版本以进行测试的工具 - 通过将不同版本符号链接(symbolic link)到全局空间

node.js - 运行 ionic 时如何解析 "Build failed with error code: 1"?

node.js - nvm 无法在 mac 上下载

php - 重新索引 MySQL INT 主键并重置 AUTO_INCREMENT