go 拼接sql


//原文链接:https://www.jianshu.com/p/a0569157c418
golang mysql拼接子查询

使用fmt.Sprintf拼接SQL
实例代码

func Select(ids []string) string {
    idStr := strings.Join(ids, "','")
    sqlText := "select id, name, age, created_at, updated_at from car where id in ('%s') limit %d"
    sqlText = fmt.Sprintf(sqlText, idStr, 20)
    return sqlText
}

func main() {
    sql := Select([]string{"1", "2", "3"})
    fmt.Println(sql)
}

//select id, name, age, created_at, updated_at from car where id ('1','2','3') limit 20
另一种写法,占位符实现
import (
    "strings"
    "database/sql"
)

func Select(db *sql.DB, ids []int) (err error) {
    //生成占位符?
    sqlText := "select * from car where id in ("+ strings.TrimRight(strings.Repeat("?,", len(ids)), ",")+")"
    var args []interface{}
    for _, v := range ids {
        args = append(args, v)
    }
    row, err := db.Query(sqlText, args...)
    if err != nil {
        return
    }
    defer row.Close()
    return
}

原文地址:https://www.cnblogs.com/lajiao/p/11498606.html

时间: 2024-10-12 08:47:39

go 拼接sql的相关文章

java用字符串拼接SQL语句的特殊字符转义问题

在实际的项目开发中,往往会根据用户在界面的文本框中输入的信息,去数据库中做模糊查询.如果使用的是原始的JDBC和SQL,往往需要对用户的输入进行转义,避免生成的sql语法错误,或者防止SQL注入.比如对输入的%和_和',就需要进行转义,因为这3个字符是SQL的特殊字符,如果不处理会导致sql出错或者是查询数据不正确. 假如有这样1个查询请求,模糊查询标题中包含a%b_cc'd的记录,正确的sql应该是下面这样的: select * from t_sch_work_info t where t.t

通过excel拼接SQL

"哎,发你一个excel,把这几百条数据修复喽."经理喊道. "嗯,好的!" 正在看资料的我被经理临时分的任务打断,搞吧!这就是我平时中的一个工作场景. 工作中总是会遇到要修复数据,数据在excel中,少的几百行,多的上万行,一般要通过excel处理的应该是不涉及到复杂的业务逻辑,直接拼接SQL就能搞定.当然你要通过excel写个程序读取数据当然也是可以的,由于要操作线上的数据库,所以这种情况下选择写程序,还要等到上线,然后夜里跑程序,不及时,pass掉,直接拼装S

【批量加入】-拼接sql字符串

如今做的一个项目须要用到批量加入,可是封装的底层没有这种方法,所以自食其力,自己来写.我们用的是拼接sql字符串的方法来实现功能. 详细实现流程:首先将须要的数据存储到实体的list中,然后将这个list传给我们批量加入的方法.批量加入的方法首先应该打开数据库连接,然后開始进行sql字符串的拼接,拼接完毕后.调用sqlhelper方法进行加入. 详细代码例如以下: #region 批量加入实体 /// <summary> /// 批量加入实体 /// </summary> ///

【批量添加】-拼接sql字符串

现在做的一个项目需要用到批量添加,但是封装的底层没有这个方法,所以自食其力,自己来写.我们用的是拼接sql字符串的方法来实现功能. 具体实现流程:首先将需要的数据存储到实体的list中,然后将这个list传给我们批量添加的方法.批量添加的方法首先应该打开数据库连接,然后开始进行sql字符串的拼接,拼接完成后,调用sqlhelper方法进行添加. 具体代码如下: #region 批量添加实体 /// <summary> /// 批量添加实体 /// </summary> /// &l

SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集

ALTER PROCEDURE [dbo].[usp_visit_detail](@siteid BIGINT, @Startime VARCHAR(15), @Endtime  VARCHAR(15), @Aflag  INT = 10,                                    --初始值为10,非10,则表示有传入参数 @Area   VARCHAR(20) = 'N',               -- --初始值为N,非N,则表示有传入参数 @Nflag  

使用表达式避免拼接SQL语句

在SQL语句编写过程中,无论在存储过程中还是在程序中,有时为了使语句兼容全部情况与某字段的特殊情况,不得不拼接SQL字串 如下表 商品ID 类别ID 1 1 2 1 3 2 4 3 5 3 如果我们要写一个SQL,改SQL可通过类别ID获得该类别的商品ID,并且要求兼容传入类别ID为0时获得所有商品,我们不得不拼接SQL了 --@类别ID为传入的参数 DECLARE @Sql NVARCHAR(500) SET @Sql='SELECT * FROM 商品' IF(@类别ID!=0) SET @

动态拼接SQL计算公式

1 --模拟数据 2 IF OBJECT_ID('tempdb..#t')>0 DROP TABLE #t 3 SELECT * INTO #t 4 FROM ( 5 SELECT '1' id,2030 g,265 h, 830 k,'g*h+h*k' gs,0 tt 6 UNION ALL 7 SELECT '2' id,2030 g,0 h, 0 k,'g*4' gs,0 tt 8 UNION ALL 9 SELECT '3' id,2030 g,265 h, 0 k,'(g+h)*2'

2016.11.03 1.优化拼接SQL 2.类里面的属性 不传参方法里也可以直接用

string Url = string.Format("{0}/api/sms/v1/s?t={1}&n={2}&m=[{3}]短信:{4}", MainUrl, ApiToken, PhoneNumber, ApiLogo, Content); 用占位符的方法比拼接SQL来的更好 -----------------------------------------------------------------------------------------------

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S

拼接sql ()

SELECT ID,FORMNAME,NODENAME,SEQUENCE, NAME, STATE, NOWTIMES,      WORK.FQREALNAME||'('||FQDEPT.FULLNAME||')' AS FQREALNAME,      NVL2(WORK.BHREALNAME,WORK.BHREALNAME||'('||BHDEPT.FULLNAME||')','') AS BHREALNAME      FROM  OA_WF_BHWORKFLOW WORK      L