select where语句返回所有null

dsekswqp  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(320)

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

tab=b[i];

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

我的table被修改了

+----------------------------------------------+
| '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工作台和intellij

vwkv1x7d

vwkv1x7d1#

注意您插入的值

' Bodyparts '

文本前后都有空格。当你搜索的时候你在寻找

LIKE 'Bodyparts '

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

= 'Bodyparts '

所以当然没有匹配的。如果你写的话这会有用的

LIKE '%Bodyparts%'

但不清楚这是你想要的。决定是否需要前导空格和尾随空格。
另外,请注意,以这种方式构建sql语句会受到sql注入攻击。您应该使用占位符,如

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

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

相关问题