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
    
    
  • 相关阅读:
    IOS设计模式之四(备忘录模式,命令模式)
    IOS设计模式之三(适配器模式,观察者模式)
    IOS设计模式之二(门面模式,装饰器模式)
    IOS设计模式之一(MVC模式,单例模式)
    C#调用C++导出(dllexport)方法
    C# 多任务之 Task
    C# Remoting的一个简单例子
    C#中指针使用总结
    C# fixed详解
    C#中virtual和abstract的区别
  • 原文地址:https://www.cnblogs.com/guanhuohuo/p/12533581.html
Copyright © 2011-2022 走看看