Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 具有两个like子句的SQL查询_Java_Mysql_Sql_Oracle - Fatal编程技术网

Java 具有两个like子句的SQL查询

Java 具有两个like子句的SQL查询,java,mysql,sql,oracle,Java,Mysql,Sql,Oracle,我是一个完全的初学者,所以如果我用一种难以理解的方式写这篇文章,我会提前道歉 我已经建立了一个数据库,我正在使用一个用户界面,以便用户可以获得某些数据位。用户需要能够通过名字和姓氏进行搜索,以返回被搜索人的所有信息。这是我在下面使用的代码。当我运行程序并输入“joe bloggs”时,会弹出一个异常,说“对不起,没有找到匹配项”。我确信joe bloggs在数据库中,因此没有问题 我是否需要考虑用户输入的名字和姓氏之间的空格 SELECT * FROM TABLE WHERE UPPER(Fir

我是一个完全的初学者,所以如果我用一种难以理解的方式写这篇文章,我会提前道歉

我已经建立了一个数据库,我正在使用一个用户界面,以便用户可以获得某些数据位。用户需要能够通过名字和姓氏进行搜索,以返回被搜索人的所有信息。这是我在下面使用的代码。当我运行程序并输入“joe bloggs”时,会弹出一个异常,说“对不起,没有找到匹配项”。我确信joe bloggs在数据库中,因此没有问题

我是否需要考虑用户输入的名字和姓氏之间的空格

SELECT * FROM TABLE
WHERE UPPER(FirstName) LIKE UPPER(?) AND UPPER(Surname) LIKE (?);
如果你把joe bloggs两个都放在like中,当然不会起作用,因为“joe”和“joe bloggs”不同

您需要拆分字符串,或者更好地为用户提供2个输入

如果只需要精确匹配,则使用=运算符,而不是like。 如果要查找包含用户输入的名称,请添加“%”:

WHERE UPPER(FirstName) LIKE UPPER('%'+userInput+'%)

我假设用户输入的名称只是某个形状或形式的一个变量,在您的问题中,由?您希望将其与数据库中的名称关联

如果此假设正确,您可以执行以下操作:

SELECT * FROM TABLE
WHERE CONCAT(CONCAT(UPPER(FirstName), ' '), UPPER(Surname)) LIKE (?);
这假定用户在名称中只输入了一个空格。输入错误很容易,因此最好用替换给定名称中的任何和所有空格来进行比较


正如其他人提到的,您可能可以将LIKE替换为=。例如名称,通常需要精确匹配。

添加一些示例表数据和预期结果!您使用的是MySQL还是Oracle?您可以阅读一些关于Oracle的文档,只会出现名称匹配的一部分。请添加更多详细信息