在 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('%',?,'%')
我正在使用 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('%',?,'%')