2011-01-06 145 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"}; 
         ^^^ ^^   ^^^   ^^