我有一些继承的遗留语言代码片段存储在数据库表中,我需要将其转换为类似SQL的语法,以便更有效地使用它。
例如,其中一个片段的格式为
keyword = [a,b,c,x:y,d,e,f,p:q]
表示离散逗号分隔值或一系列冒号分隔值
如何将其转换为等效的SQL友好代码段
keyword in (a,b,c) or keyword between x and y or keyword in (d,e,f) or keyword between p and q
由于
答案 0 :(得分:0)
它不是正则表达式,但第一个想到它提取方括号内的文本,所以你有
textVariable = a,b,c,x:y,d,e,f,p:q
然后用列拆分,这样你就有了一个数组,其中每个元素都是字符串的一部分。所以你得到的数组将是
array[0] = a
...
array[3] = x:y
...
然后浏览你的数组并创建你想要的最终字符串。这样的事情(尽管没有经过测试)
finalString = ""
tempString = ""
for (int i = 0, i < array.length; i++) {
if (array[i].contains(":")) { // then it needs to be between the two values
if (finalString.length > 0) {
finalString = finalString + " or "; // need to add an 'or'
}
if (tempString.length > 0) { // then need to add the keyword in (...) to finalString
finalString = finalString + tempString + ") or ";
}
temparray = array[i].split(":")
finalString = finalString + " keyword between " + temparray[0] + " and " + temparray[1]
} else {
if (tempString.length = 0) {
tempString= "keyword in ("; // need to start the next set
} else {
tempString = tempString + ", "
}
tempString = tempString + array[i];
}
}