Java准备语句中的通配符问题
目前,在数据库中使用select时,我对如何为长值设置通配符感到困惑。目前我有:Java准备语句中的通配符问题,java,mysql,sql,Java,Mysql,Sql,目前,在数据库中使用select时,我对如何为长值设置通配符感到困惑。目前我有: preparedstatement= conn.prepareStatement("SELECT * FROM database WHERE LONGVALUES LIKE ? "); preparedstatement.setLong(1, aLongValue); 我目前对如何使用通配符来获得我想要的结果感到困惑。我要选择的是数据库中的所有值,该数据库的LONGVALUES列包含数字aLongValue。因
preparedstatement= conn.prepareStatement("SELECT * FROM database WHERE LONGVALUES LIKE ? ");
preparedstatement.setLong(1, aLongValue);
我目前对如何使用通配符来获得我想要的结果感到困惑。我要选择的是数据库中的所有值,该数据库的
LONGVALUES
列包含数字aLongValue
。因此,如果数据库中有52
,则输入5
或2
将选择它。您不能对数值执行操作。它必须是字符串,因此您应该将LONGVALUES
设置为VARCHAR字段,或者使用标量函数将值转换为符合查询的字符串,即
SELECT * FROM database WHERE TO_CHAR(LONGVALUES) LIKE ?;
要使用LIKE,你的aLongValue应该是一个varchar,然后你可以运行一个。。。其中,像“%5%”这样的longvalues不确定longvalues
的数据类型是什么。如果它是数字类型,那么使用类似于
操作符的操作符是没有意义的。如果是字符类型,那么您不应该在Java代码中使用setLong
?preparedstatement=conn.prepareStatement(“从数据库中选择*到字符(长值)的位置?”);setChar(1,'%'+aLongValue)+'%');我认为在进行设置时必须构造参数,例如,preparedstatement.setString(1,“%”+aLongValue+“%”
。问题仍然是OP实际要做什么?我觉得他不太可能为了适应这个可能定义不清的问题而故意更改列定义。