mysql - 如何在格式化的 mysql 查询中删除反引号?
问题描述
好的,所以我使用 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 列。然后您生成一个唯一的密钥。例如 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
推荐阅读
- c# - 错误 C# Dynamics CRM:在配置的安全令牌服务上找不到身份验证端点用户名
- svg - SVG CSS关键帧动画帮助:在3个屏幕之间无限淡出
- vue.js - vue eventbus - $on 不会触发总线
- android - java.lang.NoSuchMethodError: 类 Lorg/koin/core/Koin 中没有虚拟方法 set_logger(Lorg/koin/core/logger/Logger;)V; 或其超类
- javascript - 将对象数组添加到会话存储
- json - Tcl 列表和 Json
- apache-kafka - Apache Kafka:较长的保留时间与快速读取最后一个值
- webrtc - 如何在 kurento 中将 h264 配置文件设置为 main 或 high?
- javascript - AttributeError:“列表”对象没有“过滤”属性(Odoo 14)
- arrays - 如何通过 Ionic 5 应用程序中的 http post 将数组传递给 Mailgun api?