gpt4 book ai didi

postgresql - 转换参数 $1 类型 : unsupported type []interface {}, 的一个接口(interface)

转载 作者:行者123 更新时间:2023-12-01 22:17:30 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





sql: converting argument $1 type: unsupported type []int, a slice of in

(3 个回答)


2年前关闭。




我尝试查询用户 ID 列表。我正在使用 Go Pq图书馆。

func ListUsers(userIDs []interface{}) (users []User, err error) {
stm := `SELECT
U.id,
(
CASE WHEN TRIM(UP.first_name || ' ' || UP.last_name) = '' THEN U.id :: TEXT ELSE UP.first_name || ' ' || UP.last_name END
) as avatar_name,
FROM
users AS U
JOIN user_profiles UP ON UP.user_id = U.id
WHERE
U.id IN ($1);`

rows, err := postgresql.Instance.Query(stm, userIDs)
defer rows.Close()
if err != nil && err != sql.ErrNoRows {
return
}

if err == sql.ErrNoRows {
return users, nil
}

for rows.Next() {
var (
id int
AvatarName string
)
err = rows.Scan(&id, &AvatarName)
if err != nil {
return nil, err
}

users = append(users, User{ID: id, AvatarName: AvatarName})
}

return users, nil
}

当我运行它时,它会给出错误 转换参数 $1 类型:不支持的类型 []interface {},接口(interface) slice

最佳答案

  • pq.Array 包裹 slice .
  • 更改IN ($1)= any($1)所以可以使用数组值。

  • 这是代码:
        stm := `SELECT
    U.id,
    (
    CASE WHEN TRIM(UP.first_name || ' ' || UP.last_name) = '' THEN U.id :: TEXT ELSE UP.first_name || ' ' || UP.last_name END
    ) as avatar_name,
    FROM
    users AS U
    JOIN user_profiles UP ON UP.user_id = U.id
    WHERE
    U.id = any($1);`
    rows, err := postgresql.Instance.Query(stm, pq.Array(userIDs))

    关于postgresql - 转换参数 $1 类型 : unsupported type []interface {}, 的一个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635517/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com