当前位置: 首页 > 面试题库 >

参数化查询:检查字段是否在SELECT语句中的值数组中

郭子航
2023-03-14
问题内容

我正在尝试配置参数化查询以达到以下效果:

SELECT field1 FROM myTable WHERE field2 IN (1,2,3,4)

我正在使用的数据库是Postgres。

此查询在未参数化的情况下成功运行,但是我想使用带有JdbcTemplate的参数化查询来填充有效的field2值(整数)列表。

尝试不同的值var"1,2,3,4""[1,2,3,4]""{1,2,3,4}",或"(1,2,3,4)"上查询),我试过的变化:

myJdbcTemplate.query("SELECT field1 FROM field2 IN (?)", new Object[]{ var })

myJdbcTemplate.query("SELECT field1 FROM field2 IN (?::integer[])", new Object[]{ var })

并且

myJdbcTemplate.query("SELECT field1 FROM field2 IN ?::integer[]", new Object[]{ var })

附带说明,描述如何参数化查询的资源也将非常有帮助。

所有这些查询都抛出PSQLExceptions,这些异常指示操作符失败或类型不匹配-这似乎很合理,因为我无法弄清楚如何对查询进行参数化。


问题答案:

看一下Spring Data
Access网页
,特别是第11.7.3节,其中涵盖了使用NamedParameterJdbcTemplate构建’IN’子句。

例如

NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
String sql = "select * from emp where empno in (:ids)";
List idList = new ArrayList(2);
idList.add(new Long(7782));
idList.add(new Long(7788));
Map parameters = new HashMap();
parameters.put("ids", idList);
List emps = jdbcTemplate.query(sql, parameters, new EmpMapper());


 类似资料:
  • 问题内容: 我有一个名为“ bob”的数组,其中包含值。 我如何才能知道在没有迭代的情况下名为bob的数组中是否存在“傻”值? 问题答案: 您可以使用方法。为此,您需要将数组转换为列表。您可以使用以下方法:

  • 问题内容: 我正在尝试检测字符串是否包含至少一个存储在数组中的URL。 这是我的数组: 该字符串由用户输入并通过PHP提交。在确认页面上,我想检查输入的URL是否在数组中。 我尝试了以下方法: 无论输入什么,返回值始终为“找不到匹配项”。 这是正确的做事方式吗? 问题答案: 尝试这个。 如果要检查不区分大小写,请使用stristr()或stripos()。

  • 我知道拆分字符串并使用运算符是可能的,但我想知道是否可以使用字符串比较轻松地完成。

  • 问题内容: 我想知道这在sql(使用php作为服务器端)中实际上可行,在其中您有一个值数组(数字),然后尝试根据该数组中的值检索数据。 我有一个SQL表: 我现在写一个查询来检索“帖子”: 是否有任何sql内置函数来检查数组中的值?还是应该为此使用PHP? 我实际上是在尝试实现Twitter模式,以显示我们关注的人的帖子。 问题答案: SQL无法解析PHP数组。试试这个:

  • 我有一个Spring Boot应用程序,使用Spring Data JPA查询MySQL数据库。 我需要得到一份经过一些参数筛选的课程列表。 我通常使用语法

  • 问题内容: 我有这个查询,我想选择那个选择的反函数。 有没有简单的方法可以解决我的问题? 问题答案: 只需使用以下查询: