日韩天堂,国产精品久久久久久久久久一区,羞羞羞网站,自拍视频网站,久久亚洲欧美成人精品,桃花阁成人网在线观看

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2024-12-10 203

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

我們最近將基礎(chǔ)框架升級到了 springboot 3.3.5 和其他相關(guān)庫。

測試期間向我報(bào)告了一個(gè)錯(cuò)誤。使用 jsqlparser 5.0 時(shí)某些查詢會失敗。

這是一個(gè)簡單的演示:

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 風(fēng)格的 convert 語法 convert(expr, type)。它僅支持:

sql server 風(fēng)格:convert(type, expr)
字符集轉(zhuǎn)換:convert(expr using charset)
這會影響使用 mysql 的 convert 函數(shù)的查詢,尤其是當(dāng)表達(dá)式很復(fù)雜時(shí)(例如使用 if 語句)。

jsqlparser 中的當(dāng)前語法:

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

這個(gè)問題有兩種解決方案:

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

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

  3. 修改 jsqlparser 語法以支持 convert(expr, type)
    需要修改語法規(guī)則以支持mysql語法。但是,請小心 transcodingfunction.appendto 方法。當(dāng)前實(shí)現(xiàn)生成 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(" )");         }     } 

相關(guān)閱讀

主站蜘蛛池模板: 久久国产视频网站 | 蜜桃视频一区二区在线观看 | 五月婷婷丁香网 | 亚洲自拍偷拍区 | 欧日韩在线不卡视频 | 亚洲人人视频 | 国内精品久久久久影院不卡 | 婷婷在线免费观看 | 羞羞视频在线免费 | 在线观看精品视频一区二区三区 | 男人的天堂午夜 | 国产精品成人一区二区三区 | 中国的免费的视频 | 偷自拍第一页 | 水蜜桃18 | 亚洲免费成人网 | 男人av的天堂 | 亚洲精品欧洲久久婷婷99 | 自拍偷拍亚洲视频 | 在线免费小视频 | 久久久久蜜桃 | 伊人激情在线 | 中文字幕一区二区三区久久网站 | 波多野结衣在线免费 | 在线视频一区二区三区三区不卡 | 亚洲成人自拍网 | 毛片免费播放无需下载 | 一级啪啪片 | 在线观看激情 | 性插网站 | 亚洲视频在线免费观看 | 伊人网99 | 久久免费视频网站 | 欧美精品福利在线视频 | 在线观看免费av网 | 国产精品久久久久免费视频 | 四虎.com| www.男人天堂.com | 伊人免费视频 | 春意网站 | 亚洲人成电影网站国产精品 |