| | |
| | | } |
| | | return count; |
| | | } |
| | | |
| | | |
| | | function buildFilterWhere(colName, comparator, colContent, Logical_judgement, sWhere) { |
| | | if (!colName || !comparator || comparator === "0") return ""; |
| | | else if (sWhere == "") { |
| | | var com = ""; |
| | | switch (comparator) { |
| | | case "7": |
| | | com = "like''%" + colContent + "%''"; |
| | | break; |
| | | case "8": |
| | | com = "like''%" + colContent + "''"; |
| | | break; |
| | | case "9": |
| | | com = "like''" + colContent + "%''"; |
| | | break; |
| | | case "10": |
| | | com = "not like''%" + colContent + "%''"; |
| | | break; |
| | | default: |
| | | com = "" + comparator + "''" + colContent + "''"; |
| | | break; |
| | | } |
| | | return " and " + "("+colName + " " + com ; |
| | | } |
| | | else if (sWhere != "") |
| | | { |
| | | var com = ""; |
| | | switch (comparator) { |
| | | case "7": |
| | | com = "like''%" + colContent + "%''"; |
| | | break; |
| | | case "8": |
| | | com = "like''%" + colContent + "''"; |
| | | break; |
| | | case "9": |
| | | com = "like''" + colContent + "%''"; |
| | | break; |
| | | case "10": |
| | | com = "not like''%" + colContent + "%''"; |
| | | break; |
| | | default: |
| | | com = "" + comparator + "''" + colContent + "''"; |
| | | break; |
| | | } |
| | | return Logical_judgement === "或" ? " or " + colName + " " + com + ")" : " and " + colName + " " + com + ")"; |
| | | } |
| | | else { |
| | | |
| | | var com = ""; |
| | | switch (comparator) { |
| | | case "7": |
| | | com = "like''%" + colContent + "%''"; |
| | | break; |
| | | case "8": |
| | | com = "like''%" + colContent + "''"; |
| | | break; |
| | | case "9": |
| | | com = "like''" + colContent + "%''"; |
| | | break; |
| | | case "10": |
| | | com = "not like''%" + colContent + "%''"; |
| | | break; |
| | | default: |
| | | com = "" + comparator + "''" + colContent + "''"; |
| | | break; |
| | | } |
| | | return " and " + colName + " " + com; |
| | | |
| | | } |
| | | |
| | | } |
| | | function fixParenthesesMatching(swhere) { |
| | | const keywordEndPositions = []; |
| | | const keywordRegex = /\b(and|or)\b/gi; |
| | | let match; |
| | | while ((match = keywordRegex.exec(swhere)) !== null) { |
| | | keywordEndPositions.push(match.index + match[0].length); |
| | | } |
| | | keywordEndPositions.sort((a, b) => a - b); |
| | | |
| | | |
| | | let leftCount = 0; |
| | | const insertPositions = []; |
| | | const workingKeywordPositions = [...keywordEndPositions]; |
| | | |
| | | for (let i = 0; i < swhere.length; i++) { |
| | | if (swhere[i] === '(') { |
| | | leftCount++; |
| | | } else if (swhere[i] === ')') { |
| | | leftCount--; |
| | | |
| | | if (leftCount < 0) { |
| | | |
| | | let insertIndex = -1; |
| | | for (let j = workingKeywordPositions.length - 1; j >= 0; j--) { |
| | | if (workingKeywordPositions[j] < i) { |
| | | insertIndex = workingKeywordPositions[j]; |
| | | workingKeywordPositions.splice(j, 1); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | insertPositions.push(insertIndex !== -1 ? insertIndex : 0); |
| | | leftCount = 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | let result = swhere; |
| | | insertPositions |
| | | .sort((a, b) => b - a) |
| | | .forEach(pos => { |
| | | result = result.slice(0, pos) + '(' + result.slice(pos); |
| | | }); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | |