zoukankan      html  css  js  c++  java
  • 【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
    
    
  • 相关阅读:
    7.20 高博教育 方法
    7.20 高博教育 随机数字(练习)
    7.17 高博教育 流程控制02
    7月17号 高博教育 复习加逻辑运算符
    7月16号 高博教育 知识扩展
    7月16号 高博教育 知识点总结
    7月16号 高博教育 数据运算符和比较运算符
    链式线性表——课上练
    顺序线性表——课上练
    链栈——课上练
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533581.html
Copyright © 2011-2022 走看看