[Go] sql문에서 배열을 인수로 사용하기

mmoo·2022년 10월 29일
0
post-thumbnail

go에서 sql을 사용할 때,in조건문에 equal조건문 처럼 배열을 그냥 넣으면 오류가 난다.

arr := []int{1,2,3}
rows, err := sql.QueryContext(
`select id, name
from user
where id in ($1)`, arr)

👇 결과

invalid input syntax for type bigint: \"{1}\"

인수 당 요소 하나를 넣어서 사용해야하기 때문..

arr := []int{1,2,3}
rows, err := sql.QueryContext(
`select id, name
from user
where id in ($1,$2,$3)`, arr[0],arr[1],arr[2])

하지만 이런 방법은 가변적인 배열을 인수로 사용할 경우, 조건문을 사용하기 더욱 복잡해진다.



✨✨ 해결 방법 ✨✨
arr := []int{1,2,3}
rows, err := sql.QueryContext(
`select id, name
from user
where id = any ($1)`, arr)

이런 경우 equal조건문 처럼, = 기호와 함께 any를 붙이면 배열을 간단하게 인수로 사용할 수 있다!

profile
팔수록 모르는게 계속 나와💩

0개의 댓글