探索 Go 的 SQL 包中的临时查询
虽然文档表明使用 SQL 包在 Go 中查询数据需要了解列数和编译时类型,这并不严格正确。 sql.Rows 类型为灵活且即席的 SQL 查询提供了解决方案。
动态列元数据检索
sql.Rows 中的 Columns 方法提供了以下列表:结果列名称。这允许您动态确定任意查询返回的列数。
扫描未知数据类型
Scan 方法支持将未知类型的值扫描为原始字节切片 (*[]byte) 或 interface{} 值。这使您能够检索列数据,而无需预先定义其类型。
使用即席查询
结合这些技术,您可以执行即席查询并检索数据放入interface{}值的切片中:
columnNames, err := rows.Columns()
if err != nil {
// Handle error
}
columns := make([]interface{}, len(columnNames))
columnPointers := make([]interface{}, len(columnNames))
for i := 0; i 此后,列切片将包含结果行中所有列的解码值。通过利用 Columns 和 Scan 方法,您可以有效地处理 Go 的 SQL 包中的即席查询。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3