美文网首页
在golang中使用正则匹配自定义模板SQL中 like 后的字

在golang中使用正则匹配自定义模板SQL中 like 后的字

作者: 承诺一时的华丽 | 来源:发表于2019-03-13 11:48 被阅读1次

    场景:

    我们在后台根据自定义SQL模板生成接口,自定义接口所传递的参数会根据模板中的参数进行匹配生成需要执行的SQL语句。

    自定义的 SQL 模板如:

    select * from account where id = {id} and user_name like '%{user_name}%'
    

    在做关键词替换的时候{user_name},执行的SQL会产生多余的''引号,如:

    占位符替换:

    select * from account where user_name like '%?%' and id = ?
    

    根据参数值,最终生成的执行SQL:

    select * from account where user_name like '%'张三'%' and id = 1
    

    解决方法:

    go sql like标准写法
    自定义sql 模板:

    select * from account where id={id} AND user_name like '%{user_name}%'
    

    最终的执行代码:

    db.query("select * from account where id=? AND user_name like ?",1,"%张三%")
    
    • 第一步:匹配'%{user_name}%''%{user_name}''{user_name}%'格式的字符串 正则:'%{(.*?)}%'|'%{(.*?)}%?'|'%?{(.*?)}%'
    • 第二步:占位符:替换'%{user_name}%'为:?
    • 第三步骤:根据正则匹配的模板'%{user_name}%'针对参数值的时候值:替换 张三 为: %张三%

    相关文章

      网友评论

          本文标题:在golang中使用正则匹配自定义模板SQL中 like 后的字

          本文链接:https://www.haomeiwen.com/subject/dkjzpqtx.html