Slice IN 절을 사용한 Golang 데이터베이스 쿼리: 과제 이해
Golang에서 정수 슬라이스와 함께 IN 절을 활용하려고 할 때 데이터베이스 쿼리를 실행하면 예기치 않은 동작이 발생할 수 있습니다. 이에 대한 이유를 살펴보고 관용적인 해결책을 찾아보겠습니다.
표준 데이터베이스/sql 패키지는 슬라이스가 있는 IN 절을 자동으로 처리하지 않습니다. 대신 쿼리를 데이터베이스로 직접 변환합니다. 여기서 바인드 변수(?)는 단일 인수를 나타냅니다. 이로 인해 슬라이스 길이에 따라 가변 개수의 인수를 포함하려고 할 때 혼란이 발생할 수 있습니다.
예를 들어 다음 쿼리는 실패합니다.
var levels = []int{4, 6, 7} rows, err := db.Query("SELECT * FROM users WHERE level IN (?);", levels)
이 제한을 극복하려면 데이터베이스 쿼리를 더 효과적으로 제어할 수 있는 sqlx 패키지를 활용할 수 있습니다. sqlx.In을 사용하여 쿼리를 전처리하면 슬라이스를 인수로 지정할 수 있습니다.
var levels = []int{4, 6, 7} query, args, err := sqlx.In("SELECT * FROM users WHERE level IN (?);", levels)
이제 쿼리는 슬라이스 길이에 해당하는 여러 바인드 변수를 포함하도록 수정되었으며, 성공적으로 실행할 수 있습니다.
sqlx.In 사용에 대한 더 자세한 내용은 Godoc의 설명서를 참조하세요. 이 접근 방식은 Golang 데이터베이스 쿼리에서 슬라이스가 있는 IN 절을 처리하는 보다 관용적이고 유연한 방법을 제공합니다.
위 내용은 Golang 데이터베이스 쿼리에서 슬라이스가 포함된 \'IN\' 절을 처리하는 방법: 함정을 피하려면?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!