go语言:数据库sql查询保存任意数量字段的数据

1、查询任意列数的表,并输出

Go 复制代码
func search() {
	rows, _ := db.Query("select * from users") // 查询数据
	columns, _ := rows.Columns()               // 查询到的字段名列表
	values := make([]any, len(columns))        // 根据字段数量,创建接收字段值的列表
	for i := range columns {                   // 根据字段数量初始化字段值
		values[i] = new(sql.RawBytes) // 定义值类型为 sql.RawBytes
		fmt.Print(columns[i], "  ")   // 打印字段名
	}
	fmt.Println()     // 换行
	for rows.Next() { // 循环多行数据
		rows.Scan(values...)       // 将一行数据赋值
		for _, d := range values { // 取出一行数据
			dd, _ := d.(*sql.RawBytes)   // 将任意类型数据转换为sql.RawBytes地址
			fmt.Print(string(*dd), "  ") // 将sql.RawBytes的地址转换为字符串
		}
		fmt.Println()
	}
}

2、根据输入的sql查找字符串,输出字段名列表、每行数据列表

Go 复制代码
func search1(sqlstr string) ([]string, [][]string) {
	var fields []string                 // 存储字段名
	var datas [][]string                // 存储所有数据行
	var data []string                   // 临时存储单行数据
	rows, _ := db.Query(sqlstr)         // 查询数据
	columns, _ := rows.Columns()        // 查询到的字段名列表
	values := make([]any, len(columns)) // 根据字段数量,创建接收字段值的列表
	for i := range columns {            // 根据字段数量初始化字段值
		values[i] = new(sql.RawBytes)       // 定义值类型为 sql.RawBytes
		fields = append(fields, columns[i]) // 存储字段名
	}
	for rows.Next() { // 循环多行数据
		rows.Scan(values...)       // 将一行数据赋值
		for _, d := range values { // 取出一行数据
			dd, _ := d.(*sql.RawBytes)       // 将任意类型数据转换为sql.RawBytes地址
			data = append(data, string(*dd)) // 存储单行数据
		}
		datas = append(datas, data) // 将单行数据添加到数据列表
		data = []string{}           // 单行数据清零
	}
	return fields, datas            // 返回字段值列表、每行数据列表
}
相关推荐
泡海椒1 小时前
JQuick-SQL 子查询:WHERE、SELECT、HAVING 与派生表实践
数据库·sql
测试运维日常笔记2 小时前
SQL 快速学习笔记:1~2 小时掌握面试重点
笔记·sql·学习
泡海椒2 小时前
JQuick-SQL CASE WHEN 与函数:在查询中构建业务字段
数据库·sql
骑着蜗牛撵大象3273 小时前
四种库收进一个SQL编辑器(下):跨库取数、方言对齐与四库巡检的落地拆解
jvm·数据库·sql·编辑器·数据迁移·跨库查询
惊讶的猫3 小时前
mysql-多表连接查询(JOIN)
数据库·sql·mysql
jiidd4 小时前
关于SQL SERVICE数据库里换行问题
数据库·sql·oracle
跨境数据猎手7 小时前
跨境电商系统三大 Web 漏洞的防护:SQL 注入、XSS、CSRF
前端·sql·xss
紧跟先前的步伐14 小时前
Go AI Agent 实战 06|JSON 结构化输出与 Go 后端校验
人工智能·ai·golang
袋鼠云数栈19 小时前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
程序员老赵20 小时前
Docker 部署 Hue:轻松搭建数据库与数据仓库 SQL 查询平台
sql·docker·开源