如何通过 pgx 驱动程序使用变量获取不同的 table?
How to use a variable to fetch different table with pgx driver?
这是一个获取法语谚语的函数:
func (r *proverbRepo) SelectFrByDegree(search string) (proverbs []domain.Proverb, err error) {
rows, err := r.Db.Query(context.Background(), `SELECT ID, proverb
FROM proverbs_fr
WHERE proverb %
ORDER BY proverb <-> DESC LIMIT 5
`, search)
if err != nil {
return
}
for rows.Next() {
var prov domain.Proverb
err = rows.Scan(&prov.ID, &prov.Literal)
if err != nil {
return
}
proverbs = append(proverbs, prov)
}
return
}
有时我想从每个说法 proverbs_bzh table 中获取另一个谚语 table。是否可以使用变量名获取不同的 table?
SELECT * FROM
例如...
这不是绑定变量的意图。
它应该用于查询重用时的数据输入。
如果 table 未知,则无法解析查询并重用执行计划。
因此,您的选择是替换字符串。
警告: 如果 table 名称来自外部来源,请务必检查它是否是正确的标识符(提示:保护免受 SQL注入)
这是一个获取法语谚语的函数:
func (r *proverbRepo) SelectFrByDegree(search string) (proverbs []domain.Proverb, err error) {
rows, err := r.Db.Query(context.Background(), `SELECT ID, proverb
FROM proverbs_fr
WHERE proverb %
ORDER BY proverb <-> DESC LIMIT 5
`, search)
if err != nil {
return
}
for rows.Next() {
var prov domain.Proverb
err = rows.Scan(&prov.ID, &prov.Literal)
if err != nil {
return
}
proverbs = append(proverbs, prov)
}
return
}
有时我想从每个说法 proverbs_bzh table 中获取另一个谚语 table。是否可以使用变量名获取不同的 table?
SELECT * FROM
例如...
这不是绑定变量的意图。
它应该用于查询重用时的数据输入。
如果 table 未知,则无法解析查询并重用执行计划。
因此,您的选择是替换字符串。
警告: 如果 table 名称来自外部来源,请务必检查它是否是正确的标识符(提示:保护免受 SQL注入)