1

如果有人将 a 传递'%'给在我的 sql 中与之进行比较的字段,su.username LIKE CONCAT('%', email ,'%'))则会返回所有行。它最终看起来像su.username LIKE CONCAT('%%%')。我可以在不过滤掉的情况下解决这个问题'%'吗?

4

2 回答 2

3

我假设你的意思是你想逃避,%所以它匹配文字%而不是任何东西。

在这种情况下,您只需要:

... su.username LIKE CONCAT('%',REPLACE(email,'%','\\%'),'%')
于 2012-06-15T23:37:25.757 回答
0

您需要转义 %,因此它实际上匹配 '%'

select * from mytable
where mycol like '%\%%';
于 2012-06-15T23:38:45.953 回答