在 MySQL 中使用不带反引号的 LIKE

Using LIKE in MySQL without backticks

我正在使用 NetBeans 8.0.2 制作库存管理系统。我有一个搜索功能,它从文本框中获取 string/sub-string 并搜索该列。我正在使用 LIKE 以便也可以搜索子字符串。早些时候我像这样使用 PreparedStatement:

query="SELECT * FROM `desktops` WHERE `Asset Code` like `%?%` ";

但是占位符不能放在反引号中,所以我得到一个异常:参数索引超出范围(1 > 参数数量,即 0)

然后我使用 Statement 而不是 PreparedStatement 并将输入放在查询中,如下所示:

query="SELECT * FROM台式机WHERE资产代码like%"+value+"%"; //value is the input from the textbox.

这导致了以下异常:'where clause' 中的未知列“%Ru%”。 Ru 是我在文本框中输入的内容。

请提出一个不会给我任何异常的解决方案,并且会 return 搜索 string/sub-string 时的值。

您的查询必须类似于

query="SELECT * FROM desktops WHERE `Asset Code`  like '%"+value+"%'";

您必须在列名周围使用反引号,在 like 函数的值周围使用单引号。

但是你的查询与准备好的语句无关。

准备好的语句看起来像

query="SELECT * FROM desktops WHERE `Asset Code`  like ?";

你必须稍后绑定这些值。

Here 你在 JAVA

中找到了一个关于如何使用准备好的 stements 的例子

您必须将 % 放在准备好的语句的参数中或在查询中将它们连接起来。

SELECT ... FROM ... WHERE column LIKE CONCAT('%',?,'%')