选择返回所有null的where语句



我正在使用java来修改表。运行此代码之后

tab=b[i];
myStatement.executeUpdate("UPDATE hetero.temporary SET CatTable = ' "+tab+" ' WHERE CatTable IS NULL");

我的桌子被修改了

+----------------------------------------------+
| '1', 'Achilles Tendon',  ' Bodyparts ', '0'  |
| '2', 'Adenoids',         ' Bodyparts ', '0'  |
| '3', 'Adrenaline',       ' Bodyparts ', '0'  |
| '4', 'Alimentary Canal', ' Bodyparts ', '0'  |
+----------------------------------------------+

但是使用

SELECT * 
FROM hetero.temporary
Where Cattable LIKE 'Bodyparts '

返回

所有值均为空的行

如果它能帮助我使用MySQL Workbench和intellij

注意您插入的值

' Bodyparts '

它在文本前后都有一个空格。当你搜索时,你在寻找

LIKE 'Bodyparts '

请注意缺少引导空间。此外,由于您没有包含任何通配符,因此该语句相当于

= 'Bodyparts '

所以当然没有什么比得上。如果你写,这会起作用

LIKE '%Bodyparts%'

但目前还不清楚这是你想要的。决定你是否真的想要前导空格和尾随空格。

另外,请注意,以这种方式构建SQL语句容易受到SQL注入攻击。你应该使用占位符,如

"UPDATE hetero.temporary SET CatTable = ? WHERE CatTable IS NULL"

然后在运行时使用准备好的语句提供该值。

最新更新