Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java准备语句中的通配符问题_Java_Mysql_Sql - Fatal编程技术网

Java准备语句中的通配符问题

Java准备语句中的通配符问题,java,mysql,sql,Java,Mysql,Sql,目前,在数据库中使用select时,我对如何为长值设置通配符感到困惑。目前我有: preparedstatement= conn.prepareStatement("SELECT * FROM database WHERE LONGVALUES LIKE ? "); preparedstatement.setLong(1, aLongValue); 我目前对如何使用通配符来获得我想要的结果感到困惑。我要选择的是数据库中的所有值,该数据库的LONGVALUES列包含数字aLongValue。因

目前,在数据库中使用select时,我对如何为长值设置通配符感到困惑。目前我有:

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实际要做什么?我觉得他不太可能为了适应这个可能定义不清的问题而故意更改列定义。