2011-01-06 142 views
0

可能重复:
creating comma seperated string to be given as input to sql “IN” clause给逗号分隔的字符串作为输入到SQL “IN” 子句

HI,

我必须实现多个选择下拉菜单中,并且所选择的值shud被格式化为输入到sql的“IN”子句。

将所选值存储在一个字符串中。但是在值之间没有分隔符,所以我无法拆分字符串。还有其他任何字符串格式化方法。

+0

合法的值如果您存储中的所有值失败一个没有分隔符的字符串,你不能区分这些值!考虑一个空白('')是一个分隔符 - 所以你可能有一个没有注意到它:-) - 也许发布一个你的字符串的例子。 – FrVaBe 2011-01-06 10:19:49

+0

@ K。 Claszen--一般情况下都是如此,但有特殊情况的解决方案。请参阅下面的答案。 – 2011-01-06 10:38:27

回答

1

有趣的解决方案:将值添加到ArrayListLinkedList,呼叫toString()。并替换'[' - >'(',替换']' - >')'。

0

如果您有一个字符串集合,然后将它们复制到1个没有分隔符的字符串,则无法再将它们分开。只是不要这样做。如果您仍有问题,请发送有关您任务的更多详情。

0

如果知道下拉的价值和所有值是唯一的和对方的子集,那么你可以使用String#contains()或正则表达式来测试,数值已经被选中。

但是,如果连接保存选择的字符串,只需添加一些简单的分隔符(如常见的“;”)就简单多了。


例为包含方法

String[] legalValues = {"YES","NO","MAYBE"}; 
String result = getSelection(); // returns a String like "MAYBEYES" 
StringBuilder inClauseBuilder = new StringBuilder(); 
boolean isFirst = true; 
for (String legalValue:legalValues) { 
    if (!result.contains(legalValue) 
    continue; 

    if (isFirst) { 
    isFirst = false; 
    } else { 
    inClauseBuilder.append(","); 
    } 
    inClauseBuilder.append("\"").append(legalValue).append("\""); 
} 
String inClause = inClauseBuilder.toString(); 

注意 - 这种做法将只要你有一个像

String[] legalValues = {"YES","NO","MAYBE-YES", "MAYBE-NO"}; 
         ^^^ ^^   ^^^   ^^