【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