我有一个SQL字符串:
var sql= "AND DT_FIM IS NULL AND ( CD_JOB, DT_INI_JOB ) IN (SELECT x.CD_JOB, x.DT_INI FROM PRS_JOBS_MAQUINA x WHERE x.CD_JOB = ':CD_JOB' AND TO_CHAR(x.DT_INI, 'YYYY-MM-DD') = ':DT_INI_JOB' AND x.DT_FIM IS NULL)
我需要提取绑定值(:CD_JOB,:DT_INI_JOB),问题是用
var bindFields=sql.substring(sql.lastIndexOf("':") + 1 , sql.lastIndexOf("'"));
它只返回第一场比赛,我需要两者。 用Javascript可以吗?如果有人发现它有用的话,请拯救它。
https://jsfiddle.net/oq0dmyjo/1/。 Apreciate你的帮助。感谢
答案 0 :(得分:2)
您可以将非常简单的正则表达式与捕获组一起使用:
parent.getItemAtPosition(pos)
<强>解释强>:
/':([^']+)/g
- 文字序列':
':
- 第1组捕获除([^']+)
'
- 匹配所有实例的全局修饰符。以下是一些需要学习的资源:
JS代码:
g
&#13;
答案 1 :(得分:0)
由于看起来您正在绑定字段,因此您可能希望将replace
与替换函数一起使用。使用@WiktorStribiżew,/':([^']+)'/g
中的正则表达式,然后像这样使用它:
var sql = "AND DT_FIM IS NULL AND ( CD_JOB, DT_INI_JOB ) IN (SELECT x.CD_JOB, x.DT_INI FROM PRS_JOBS_MAQUINA x WHERE x.CD_JOB = ':CD_JOB' AND TO_CHAR(x.DT_INI, 'YYYY-MM-DD') = ':DT_INI_JOB' AND x.DT_FIM IS NULL)";
var fields = {
CD_JOB: 1,
DT_INI_JOB: 2
};
sql = sql.replace(/':([^']+)'/g, function($0, $1) {
return fields[$1];
});
console.log(sql);