色偷偷91综合久久噜噜-色偷偷成人-色偷偷尼玛图亚洲综合-色偷偷人人澡久久天天-国内精品视频一区-国内精品视频一区二区三区

Hello! 歡迎來到小浪云!


JSqlParser-MySQL Convert(expr,type) 函數的問題


avatar
小浪云 2024-12-10 180

JSqlParser-MySQL Convert(expr,type) 函數的問題

我們最近將基礎框架升級到了 springboot 3.3.5 和其他相關庫。

測試期間向我報告了一個錯誤。使用 jsqlparser 5.0 時某些查詢會失敗。

這是一個簡單的演示:

public class test {   public static void main(string[] args) throws jsqlparserexception {     string sql =         "select  convert(if(bill_type = 2, id, ''), char) from dual";     statement statement2 = ccjsqlparserutil.parse(sql);     system.out.println(statement2.tostring());   } } 

問題在于 jsqlparser 5.0 不支持 mysql 風格的 convert 語法 convert(expr, type)。它僅支持:

sql server 風格:convert(type, expr)
字符集轉換:convert(expr using charset)
這會影響使用 mysql 的 convert 函數的查詢,尤其是當表達式很復雜時(例如使用 if 語句)。

jsqlparser 中的當前語法:

{     <k_convert> "("     (         lookahead(coldatatype() ",") (             coldatatype = coldatatype()             "," expression = expression()             [ "," style = <s_long> ]         )         |         (             expression = expression()             <k_using> transcodingname=identifierchain()         )     )     ")" } 

這個問題有兩種解決方案:

  1. 使用 cast 而不是 convert
    只需將 convert(expr, type) 替換為 cast(expr as type) 即可。如果您使用 mysql

  2. ,這是最簡單的解決方案

  3. 修改 jsqlparser 語法以支持 convert(expr, type)
    需要修改語法規則以支持mysql語法。但是,請小心 transcodingfunction.appendto 方法。當前實現生成 convert(type, expr),這在 sql server 中是合法的,但在 mysql 中是非法的

    public StringBuilder appendTo(StringBuilder builder) {         if (isTranscodeStyle) {             return builder                     .append("CONVERT( ")                     .append(expression)                     .append(" USING ")                     .append(transcodingName)                     .append(" )");         } else {             return builder                     .append("CONVERT( ")                     .append(colDataType)                     .append(", ")                     .append(expression)                     .append(transcodingName != null && !transcodingName.isEmpty()                             ? ", " + transcodingName                             : "")                     .append(" )");         }     } 

相關閱讀

主站蜘蛛池模板: 色拍拍噜噜噜啦啦新网站 | 一级特黄网站 | 欧美成人精品久久精品 | 亚洲伊人久久在 | 伊人久久91| 婷婷久久综合九色综合九七 | 日韩视频免费一区二区三区 | 日日射影院| 毛片免费观看 | 久久久久久久国产免费看 | 欧美熟夫 | 在线日韩一区 | 日韩欧美一区二区三区不卡视频 | 天天做日日爱 | 免费国产一级特黄aa大 | 色婷婷影院 | 久久人人爽人人爽 | 一级在线视频 | 中日韩欧美风情视频 | 国内精品久久久久影院亚洲 | 一区二区三区国产 | 免费看黄的网址 | 亚洲欧美日韩久久精品第一区 | 色综合天天综合网国产成人网 | 黄三级高清在线播放视频 | 亚洲 欧美 国产 中文 | 精品国产一区二区三区久久 | 停停色| 久久久久国产精品美女毛片 | 黄色片视频在线观看 | 神马午神马午夜98 | 99久久免费精品 | 97人人澡人人爽人人模 | 中文字幕制服丝袜 | 综合久久久久久久 | 亚洲一级网站 | 三级三级三级网站网址 | 久久精品中文字幕极品 | 国产丝袜美女 | 天天做日日做天天欢 | 精品三级三级三级三级三级 |