
SET SESSION block_encryption_mode = 'aes-256-ecb'; SELECT filed FROM schema.table WHERE encrypted_field in ( SELECT HEX(AES_ENCRYPT('123', 'secret')) ); 只知道一步一步地执行, 但是遇上这样的, 就不知道怎么办了.
1 pluvet Apr 22, 2022 Golang 不支持 SQL 语法 |
2 codefever Apr 22, 2022 在用 Golang 进行开发的时候,如果需要在和数据库交互,则可以使用 database/sql 包。这是一个对关系型数据库的通用抽象,它提供了标准的、轻量的、面向行的接口。 |
3 morty0 Apr 22, 2022 Prepare 应该就可以吧 |
4 PeterYang1996 Apr 22, 2022 为什么一定要用 sql 实现呢 |
5 seakingii Apr 22, 2022 复杂的 SQL 可以做成存储过程供 GO 调用. |
6 MoYi123 Apr 22, 2022 放事务里,分 2 句跑. |
7 freemoon Apr 22, 2022 db.InTransaction( your_logic() ) |
8 lesismal Apr 22, 2022 注意注释地方: ```golang package main import ( "database/sql" "log" _ "github.com/go-sql-driver/mysql" ) func main() { // 默认不支持 multi statements ,要设置 multiStatements=true ,否则无法在一个 Exec/Query 里执行多条语句 db, err := sql.Open("mysql", "root:123qwe@tcp(127.0.0.1:3306)/?charset=utf8mb4&multiStatements=true") if err != nil { log.Fatal(err) } result, err := db.Query(` SET SESSION block_encryption_mode = 'aes-256-ecb'; SELECT filed FROM schema.table WHERE encrypted_field in ( SELECT HEX(AES_ENCRYPT('123', 'secret')) ); `) if err != nil { log.Fatal(err) } defer result.Close() for result.Next() { var filed string err = result.Scan(&filed) if err != nil { log.Fatal(err) } log.Println("filed:", filed) } } ``` |
9 suueyoung OP 太感谢了! |