>백엔드 개발 >Golang >## Go의 데이터베이스/SQL에서 슬라이스가 있는 IN 쿼리를 처리하는 방법은 무엇입니까?

## Go의 데이터베이스/SQL에서 슬라이스가 있는 IN 쿼리를 처리하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-25 12:42:30863검색

## How to Handle IN Queries with Slices in Go's Database/SQL?

Go의 데이터베이스/SQL에서 슬라이스를 사용하여 IN 쿼리 처리

SQL 쿼리에 대해 데이터베이스/sql 패키지를 사용하는 동안 개발자는 다음과 같은 문제에 직면할 수 있습니다. IN 절과 슬라이스 인수를 처리합니다. 이 문제는 데이터베이스/sql이 쿼리를 검사하지 않고 인수를 드라이버에 직접 전달하기 때문에 발생합니다.

다음 예를 고려하십시오.

<code class="go">inq := strings.Join(artIds, ",")
rows, err = db.Query("SELECT DISTINCT title FROM tags_for_articles LEFT JOIN tags ON tags.id = tags_for_articles.tag_id WHERE article_id IN (?)", inq)</code>

이 쿼리는 명령문으로 준비될 때 작동하지 않습니다. 바인드 변수 "?" 단일 인수에 해당합니다. 그러나 슬라이스 길이에 따라 다양한 수의 인수가 필요합니다. 시도된 솔루션에서 볼 수 있듯이 문자열 연결로 이 문제를 해결하려고 시도하면 오류가 발생합니다.

SQLx 패키지를 사용한 솔루션

sqlx 패키지는 보다 편리한 In 함수를 사용하여 이러한 쿼리를 처리하는 관용적인 방법입니다. 쿼리와 슬라이스를 sqlx.In에 인수로 전달하면 쿼리를 데이터베이스로 보내기 전에 처리할 수 있습니다.

<code class="go">var levels = []int{4, 6, 7}
query, args, err := sqlx.In("SELECT * FROM users WHERE level IN (?);", levels)</code>

쿼리가 처리되면 생성된 쿼리 문자열과 인수를 다음과 같이 사용할 수 있습니다. db.Query()는 평소와 같습니다.

자세한 내용은 Godoc에서 InQueries에 대한 내용을 참고하실 수 있습니다. 이 접근 방식을 채택함으로써 개발자는 Go 프로그램에서 슬라이스 인수를 사용하여 IN 쿼리를 효과적으로 처리할 수 있습니다.

위 내용은 ## Go의 데이터베이스/SQL에서 슬라이스가 있는 IN 쿼리를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.