如何将逗号分隔查询字符串转为字符串数组?SQL IN子句拼接问题
问题根源&解决方法
你现在的问题出在两个地方:
- 直接把数组拼进字符串里,JavaScript会自动把数组转成逗号分隔的普通字符串,但SQL的
IN语法要求值必须放在括号里,而且每个字符串值要加单引号 - 你写的
inPropTyperray完全是多余的,propertytype.split(",")已经直接返回数组了,没必要再用forEach重新推一遍
修正后的代码
propertytype = 'sfr,condo,vac' myQstr = [] if (propertytype) { console.log('we have Property Filter') if (propertytype.length > 0) { // 直接split得到数组,同时给每个元素套上单引号 const inPropType = propertytype.split(",").map(item => `'${item}'`) // 把数组转成带括号的字符串,符合SQL语法 const condition = `LOWER(f.Record.propertyType) IN (${inPropType.join(',')})` myQstr.push(condition) console.log(inPropType) console.log(myQstr) } }
说明
- 用
map给每个数组元素加上单引号,得到[''sfr'', ''condo'', ''vac''](实际运行时是'sfr'这种格式) - 用
join(',')把数组转成'sfr','condo','vac',再套上括号,最终拼接出的SQL条件就是LOWER(f.Record.propertyType) IN ('sfr','condo','vac'),完全符合语法要求 - 删掉了多余的
inPropTyperray,简化代码逻辑
内容的提问来源于stack exchange,提问作者Angular DevBoy
相关产品推荐
相关产品推荐

