gpt4 book ai didi

java - jdbc preparedStatement 的数字通配符?

转载 作者:可可西里 更新时间:2023-11-01 08:35:35 25 4
gpt4 key购买 nike

我正在使用 JDBC 中的 prepareStatement 进行查询。有时我会插入“数字 woldcard”而不是实际数字。

考虑这样的查询:域:a int, b text;

pStatement = 
dbConnection.prepareStatement("SELECT * FROM R1 WHERE a LIKE ? AND b LIKE ?");

有时候我想:

pStatement.setInt(1, 10);
pStatement.setString(2,"%");
pStatement.exequteQuery();

没问题,因为通配符是一个字符串。

其他时候我想:

pStatement.setInt(1, ANY_INT_SHOULD_BE_VALID);
pStatement.setString(2, "Hello");
pStatement.exequteQuery();

那是行不通的。我可以更改查询并使用即“a <> 0”,但这需要额外的代码并且使得使用 prepareStatement 有点不必要。

有没有办法解决这个而不改变实际查询,只改变插入的值?

最佳答案

I could change the query and use i.e. "a <> 0"

根据您的要求,这应该是 a IS NOT NULL

but that requires extra code and makes the use of a prepareStatement somewhat unnecessary.

PreparedStatement 是 VARCHAR 列最需要的,似乎在所有场景中都存在。

pStatement.setString(2,"%");

这不会匹配所有字符串,因为 % 需要 LIKE 运算符才能获得其特殊含义。

Is there a way to solve this without changing the actual query, only the inserted values?

不,IMO,由于要求根本不同,您需要相应地进行查询。

关于java - jdbc preparedStatement 的数字通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13630239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com