第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在golang中參數(shù)化SQL子查詢

在golang中參數(shù)化SQL子查詢

Go
慕尼黑5688855 2022-11-08 15:10:46
請考慮這個問題。我需要在 golang 中參數(shù)化一個 SQL(子)查詢。請考慮下面的偽代碼或https://go.dev/play/p/F-jZGEiDnsd詳細hayStack信息以字符串切片形式提供給我,lookIn并且可能會有所不同。我需要在所有這些干草堆中尋找%eedl%(針)。評論中的代碼是我目前處理它的方式 - 我只參數(shù)化needle我正在尋找的。我如何參數(shù)化hayStacks?package mainimport "fmt"func main() {    fmt.Println("Hello, 世界")    lookIn := []string{"hayStack.1", "hayStack.2", "hayStack.3", "hayStack.4", "hayStack.5"}    needle := "eedl"    needle = "%" + needle + "%"    for i := range lookIn {        fmt.Println("lookIn", lookIn[i])    }    fmt.Println("needle", needle)    /* this is how I currently do         txt := `select needle,tagTitle,Epoch from ( select needle,tagTitle,Epoch where hayStackName = "hayStack.1" or hayStackName = "hayStack.2" or hayStackName = "hayStack.3" or hayStackName = "hayStack.3" or hayStackName = "hayStack.4" or hayStackName = "hayStack.5" )  where tagTitle like ? order by tagTitle COLLATE NOCASE ASC ;`        rows, err := sqliteDbPtr.Query(txt, needle)        if err != nil {            if err != sql.ErrNoRows {                checkErr(err)                panic(err)            }            return        }        defer rows.Close()    */}任何輸入將不勝感激。
查看完整描述

1 回答

?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

僅使用標準庫,您可以將 haystack 參數(shù)和 needle 參數(shù)收集到一個切片中,然后將其傳遞給Query方法。


對于 SQL 本身,您可以使用IN運算符并將其右側操作數(shù)生成為?基于干草堆數(shù)量的列表。


args := make([]interface{}, len(lookIn)+1) // slice of all args

inRHS := "" // string of ?,... for the IN operator's right hand side

for i := range lookIn {

    args[i] = lookIn[i]

    inRHS += "?,"

}

args[len(args)-1] = needle   // add the last arg

inRHS = inRHS[:len(inRHS)-1] // remove last ","

query := `SELECT needle,tagTitle,Epoch

FROM some_table

WHERE hayStackName IN (` + inRHS + `)

AND tagTitle LIKE ?

ORDER BY tagTitle COLLATE NOCASE ASC`


rows, err := sqliteDbPtr.Query(query, args...)

if err != nil {

    // handle error

}

defer rows.Close()


for rows.Next() {

    //

}

if err := rows.Err(); err != nil {

    //

}

請注意,我已刪除子查詢并添加了FROM some_table您的問題缺少的子句。


查看完整回答
反對 回復 2022-11-08
  • 1 回答
  • 0 關注
  • 239 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號