天天看点

Python中SQL——LIKE中的%

需求:

SQL语句:SELECT * FROM T_ARTICLE WHERE title LIKE '%searchStr%'

报错:

但是在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%。从网上查了一些帖子,大多数人的回答是:

cur.execute("SELECT* from  T_ARTICLE WHERE title LIKE '%%%s%%'" %  searchStr) 或者

cur.execute("SELECT* from  T_ARTICLE WHERE title LIKE %s" %  ('%%%s%%' % searchStr))

这样print出SQL语句之后为:

SELECT * FROM T_ARTICLE WHERE title LIKE '%生活%'

并且会报错  TypeError: not enough arguments for format string

这个错误很明显是提示格式化的时候出现了问题。

解决:

最终将在Python中执行的sql语句改为:

sql = "SELECT * FROM T_ARTICLE WHERE title LIKE '%%%%%s%%%%'" % searchStr

执行成功,print出SQL语句之后为:

SELECT * FROM T_ARTICLE WHERE title LIKE '%%生活%%'

原因:

Python在执行sql语句的时候,同样也会有%格式化的问题,仍然需要使用%%来代替%。因此要保证在执行sql语句的时候格式化正确。而不只是在sql语句(字符串)的时候正确。

      本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1918875,如需转载请自行联系原作者