function montageSQL(sqlStr, params) {
// 确定日期格式,例如:2024-01,2024/01
// const regexDate = /^(\d{4})([-\/\.])(\d{2})$/;
// if (
// !regexDate.test(params.startDate) ||
// !regexDate.test(params.endDate)
// ) {
// return "日期格式参数缺失或错误";
// }
// 正则
let parameterTemplateRegex = /<parameter>(.*?)<\/parameter>/g,
paramsRegex = /\$\{([^\}]+)\}/g;
// 判断是否包含"<parameter>"字符串
if (sqlStr.includes("<parameter>")) {
let sqlStrSplit = sqlStr.split(parameterTemplateRegex);
console.log(sqlStrSplit);
return sqlStrSplit
.map((item, index) => {
// console.log(item);
let startDate = params.startDate
? params.startDate.split(params.startDate.charAt(4))
: [],
endDate = params.endDate
? params.endDate.split(params.endDate.charAt(4))
: [];
return item.replace(
paramsRegex,
(_, variableName, offset, string) => {
console.log(variableName);
return params[variableName] || undefined;
}
);
// return item
// .replaceAll("${开始年份}", startDate[0])
// .replaceAll("${开始月份}", startDate[1])
// .replaceAll("${截止年份}", endDate[0])
// .replaceAll("${截止月份}", endDate[1])
// .replaceAll("${设区市名称}", params.city);
})
.filter((item, index) =>
index >= 1 ? !item.includes("undefined") : item
)
.join("");
} else {
return sqlStr.replace(
paramsRegex,
(_, variableName) => params[variableName] || ""
);
}
}
// let sql =
// "SELECT a.id,to_date(a.nd || '-' || a.yd || '-01', 'YYYY-MM-DD') as nyr,a.dybm as 地域编码,a.ajlymc as 案件来源,a.jgdxmlbm as 监管对象目录编码,a.jgdxmlmc as 处罚行为,a.sl as 数量,b.sqsmc as 设区市,b.xqmc as 县区,b.dymc as 地域名称 from gxmpa_xyda.sjck_jcba_ssb a,gxmpa_xyda.sjck_dy_wdb b where a.dybm=b.dybm and b.sqsmc in ('${city}') and b.sqsmc in ('${开始年份}') <parameter> and b.sqsmc in ('${city}') </parameter> and 1=2 <parameter> and b.sqsmc in ('${city}') </parameter> and 1=3";
// let sql =
// "SELECT a.id,to_date(a.nd || '-' || a.yd || '-01', 'YYYY-MM-DD') as nyr,a.dybm as 地域编码,a.ajlymc as 案件来源,a.jgdxmlbm as 监管对象目录编码,a.jgdxmlmc as 处罚行为,a.sl as 数量,b.sqsmc as 设区市,b.xqmc as 县区,b.dymc as 地域名称 from gxmpa_xyda.sjck_jcba_ssb a,gxmpa_xyda.sjck_dy_wdb b where a.dybm=b.dybm <parameter> and concat(a.nd,a.yd) >= concat('${startYear}',case when '${startMonth}'>9 then '${startMonth}' else concat(0,'${startMonth}') end ) and concat(a.nd,a.yd) <= concat('${endYear}',case when '${endMonth}'>9 then '${endMonth}' else concat(0,'${endMonth}') end ) </parameter> <parameter> and b.sqsmc in ('${city}') </parameter>";
let sql =
"SELECT CONCAT(b.DYMC,b.DYBM), a.sl FROM GXMPA_XYDA.SJCK_DY_WDB b JOIN (SELECT SUBSTR(a.DYBM,1,${codeLength}) dm, SUM(a.SL) sl FROM GXMPA_XYDA.SJCK_JCBA_SSB a <parameter>WHERE a.DYBM LIKE '${regionCode}%'</parameter> GROUP BY SUBSTR(a.DYBM,1,${codeLength})) a ON b.DYBM = a.dm ORDER BY b.DYBM";
// const backSQL = montageSQL(sql, {
// startYear: "2023",
// startMonth: "01",
// endYear: "2024",
// endMonth: "01",
// city: "南宁市",
// });
const backSQL = montageSQL(sql, {
codeLength: 3,
regionCode: "002",
});
console.log(sql);
console.log(backSQL);
05-07
2万+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
03-15
3060
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-22
9619
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-01
684
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-26
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交