java.util.UnknownFormatConversionException: Conversion = ''';


今天在測試一個新的項目,在執行sql查詢報表的時候。由於我的sql中帶有%,導致在輸出日志時報錯“java.util.UnknownFormatConversionException: Conversion = '''。
經過分析發現:Java中如何讓String.format正常處理%

1,代碼示例:

System.out.println(String.format("where  name like % %s","Zhang san"));,

2,執行時報錯:

java.util.IllegalFormatFlagsException

3,解決辦法1:

使用%%對%進行轉義

代碼示例:

System.out.println(String.format("where  name like %% %s","Zhang san"));

正確執行時的輸出結果:

where  name like % Zhang san

解決辦法2:

System.out.println(String.format("where  name like %s %s","%","Zhang san"));

正確執行時的輸出結果:

where  name like % Zhang san

 

其實不用看Conversion = ‘Y’,什么Conversion = ‘I’,Conversion = ‘F’ … 都是這個錯誤造成的。

第一次遇到這個錯誤,有點蒙,還查了很久,最后發現是:在格式化輸出時,輸出字符串的內容不能含有%。如果要輸出%,必須進行轉義,也就是使用%%代替%

但是我又不能直接修改sql,所以我采用的方式是在輸出日志時把%替換成%%

舉例:
我的sql是:String sql=“SELECT DATE_FORMAT(date(now()), ‘%Y%m%d%H%i’) AS time_id”

我的日志輸出則應該是:Logutil.trace(“我是日志:”+sql.replace("%", “%%”));

解決辦法其實很簡單,這也是怪我基礎知識不扎實,故記之,以后萬萬不可犯同樣的錯誤。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM