PostgreSQL支持" ANY" SQL运算符是" IN"的一个非常好的替代品。我们的语句依赖于JDBC / PreparedStatements的Java程序员。例如,我们可以执行like this:
,而不是创建包含数千个ID的长SQL字符串final PreparedStatement statement = connection.prepareStatement(
"SELECT my_column FROM my_table where search_column = ANY (?)"
);
final Long[] values = getValues();
statement.setArray(1, connection.createArrayOf("bigint", values));
final ResultSet rs = statement.executeQuery();
我最近偶然发现了一个interesting article声称在执行" ANY"通过改变这个条款:
"WHERE search_column = ANY (ARRAY[15368196, -- 11,000 other keys --)])"
对此:
"WHERE search_column = ANY (VALUES (15368196), -- 11,000 other keys --)"
问题:
我不想做这样的事情:
final PreparedStatement statement = connection.prepareStatement(
"SELECT my_column FROM my_table where search_column = ANY (VALUES (?), (?), (?), ...)"
);
为什么我使用" ANY"更多背景/背景。条款可以在这里找到: PreparedStatement IN clause alternatives?
提前致谢!