【python】字符串中%的问题

小伙伴反馈使用接口平台执行某条sql返回值为null
在这里插入图片描述
但是这条sql直接使用navicat运行时可成功返回正确的数据
在这里插入图片描述
虾米情况?首先确认一下是否是数据库连接出现了问题?
查看日志,发现获取数据库连接正常,且进行简单的SELECT查询是没有问题

<util.DBTool.dbUtil.DBUtil object at 0x10de87400>

那难道是因为sql语句中文字符的原因?或者是因为sql语句中LIKE惹的祸?
修改成以下sql语句,均返回Null

SELECT  
    count(*)  as count 
FROM 
    (SELECT  * FROM `xxx`.`unit_apply` 
WHERE 
    `unit_name` LIKE '1%' 
GROUP by unit_name) newtable
SELECT  
    count(*)  as count 
FROM 
    (SELECT  * FROM `xxx`.`unit_apply` 
WHERE 
    `unit_name` = '1%' 
GROUP by unit_name) newtable

会不会是因为% 字符的问题?毕竟%属于强大的转义字符
将sql语句修改为

SELECT  
    count(*)  as count 
FROM 
    (SELECT  * FROM `xxx`.`unit_apply` 
WHERE 
    `unit_name` LIKE '1' 
GROUP by unit_name) newtable

这样可以正常运行,那既然是%的问题,如何修改呢?
首先想到的是增加’/‘或者‘\’,取消转义,但是并未能成功
查资料发现可以输入%%,这样最终执行时自动转义执行%,尝试之,发现这样可以正常运行,且结果正确

在这里插入图片描述

问题虽然解决了。但是让我们看看再python中%究竟有哪些使用的方式
python中用%代表格式符,表示格式化操作

Python支持将值格式化为字符串。虽然这可以包括非常复杂的表达式,但最基本的用法是将值插入到%s 占位符的字符串中

name = raw_input("who are you?")
print "hello %s" % (name,)

该 %s 令牌允许我插入(和潜在的格式)的字符串。请注意, %s 令牌被替换为% 符号后传递给字符串的任何内容

%s、%r、%d分别表示字符串以str()、rper()、以及十进制整数表示,%f表示结果为浮点型

%s 字符串

string="hello"
print('%s'% (string)) 
#%s打印时结果是hello 

%d 整型

num=12.0
print('%s'% (num))
#%s打印时结果是12.0

num=12.0
print('%d'% (num))
#%d打印时结果是12

%f 浮点型
%a.bf,a表示浮点数的打印长度,b表示浮点数小数点后面的精度 ,%f时表示原值,默认是小数点后6位数

num=12
print('%f'% (num))
#%f打印时结果是12.000000

posted @ 2019-10-16 21:13  guanqinghua  阅读(1222)  评论(0编辑  收藏  举报