当前位置: 首页 > 知识库问答 >
问题:

在Java中转换字符串以传递SQL WHERE in子句中的多个值

卢鸿博
2023-03-14

我有一个字符串参数fruit,它应该接受逗号分隔的字符串,例如:“banana,Apple,orange”。如何将该字符串拆分为3个数据,如“香蕉”、“苹果”、“橙色”,以便将其传递给下面的SQL:

StringBuilder sql = new StringBuilder(
"SELECT * FROM fruit f where ");

 if (!inputParameters.getFruit().isEmpty()) {
   sql.append("f.name IN (:fruit) ");
   parameterSource.addValue("fruit", inputParameters.getFruit());
 ) 
}

在这里,我想传递SQL in子句中getfrure的值,该子句已经转换为3个数据:“香蕉”、“苹果”、“橙色”而不是只有1个字符串数据“香蕉,苹果,橙色”

共有1个答案

慕嘉运
2023-03-14

最简单的方法是将整个“banana,Apple,orange”字符串传递给postgres,并让postgres通过string_to_array和unnest()分解该字符串:

StringBuilder sql = new StringBuilder(
"SELECT * FROM fruit f where ");

if (!inputParameters.getFruit().isEmpty()) {
  sql.append("f.name IN (SELECT UNNEST(string_to_array(:fruit, ', ')) ");
  parameterSource.addValue("fruit", inputParameters.getFruit());
  ) 
}

string_to_array:fruit字符串分解为数组,而unnest将该数组转换为适合于

 类似资料:
  • 问题内容: 我需要Java程序采用类似以下的字符串: 并将其转换为字符串数组,例如: 没有句号或标点符号(最好)。顺便说一句,字符串输入始终是一个句子。 有没有一种我看不到的简便方法?还是我们真的必须大量搜索空格并从空格之间的区域(即单词)创建新的字符串? 问题答案: String.split()将完成您想要的大部分操作。然后,您可能需要遍历单词以提取任何标点符号。 例如:

  • 我有一个PHP脚本这是一个字符串替换函数,它接受数组中的字符,如果在字符串中找到任何字符,就替换它们。是否有与该函数等价的java函数。我找到了一些方法,但有些是使用循环,有些是重复语句,但在Java中没有找到类似的单行解决方案。

  • 本文向大家介绍替换Java字符串中的子字符串,包括了替换Java字符串中的子字符串的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 我们想将子字符串“ Dead”替换为“ Alive”。为此,让我们使用以下逻辑。在这里,我们使用了while循环,并在其中找到了要替换的子字符串的索引。这样,我们一个接一个地替换了整个子字符串。 以下是替换子字符串的完整示例。 示例 输出结果

  • 问题内容: 我有一些带有以下格式的方程式的字符串。 我还有一个文本文件,其中包含每个变量的名称,例如: 等等… 什么是对我来说,写代码的最佳方式,使其在插头到处发生,并且对等? 问题答案: 对于string ,请使用以下函数:

  • 我需要以最有效的方式替换一个字符串中许多不同的子字符串。除了使用string.replace替换每个字段的蛮力方法之外,还有其他方法吗?

  • 我试图通过C#代码传递此字符串,但失败了: soap:body1479374 System.xml.XmlDocument文档=新建System.xml.XmlDocument();Doc.LoadXML(字符串); 尝试发送作为整体和作为3个部分,但在A节内失败 string Sectiona=@“ soap:body ”; 字符串段B=“1479374”; 字符串节C=“”; 字符串数据=段A