개발 창고/Android

[Kotiln] SQLite "IN"절 사용하는 방법

로이제로 2023. 7. 27. 22:00
반응형

이전에 joinToString에 대해 글을 쓴 적이 있습니다

2023.07.23 - [개발 창고/안드로이드 개발] - [Kotlin] String 배열을 한 개의 String으로 만드는 방법

 

[Kotlin] String 배열을 한 개의 String으로 만드는 방법

1. 기본 문법 문자열 또는 숫자형 배열을 사용하다 보면 join을 해야 하는 경우가 많습니다. fun Sequence.joinToString( separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, trunc

royzero.tistory.com

 

1. 기본 방법

SQLite에서는 이를 활용해서 IN절의 조건을 넣을 수 있습니다.

만약 아래와 같은 상품 코드 기준의 상품을 삭제하는 Query를 실행해야 한다면

DELETE
  FROM PRODUCT
 WHERE PRDT_CODE IN (1, 2, 3, 4, 5)
// 삭제할 상품 코드 목록
val params = arrayListOf(1, 2, 3, 4, 5)

// SQLite Helper
val dbHelper:DBHelper = DBHelper(context, "데이터베이스명", null, 1)

// 쓰기 데이터베이스
val database = dbHelper.writableDatabase

// 삭제 실행
val tableName = "PRODUCT"
database.delete(PRODUCT, "PRDT_CODE in (?)", arrayOf(params.joinToString()))

위와 같이 실행하면 1~5번 코드의 상품이 "데이터베이스명" 데이터베이스의 "PRODUCT" 테이블에서 삭제 되게 됩니다.

 

2. 문자열 기준 방법

위의 경우에는 상품 코드가 INTEGER형인 경우이고, 만약 TEXT형인 경우 ('P001', 'P002', 등)인 경우에는 joinToString의 prefix와 postfix로 조정 가능합니다.

val params = arrayListOf("P001", "P002", "P003", "P004", "P005")
val code = params.joinToString("', '", "'", "'")
println(code)

문자열 배열을 파라미터로 만드는 방법

위에 소스를 수정하면 아래와 같이 params와 joinToString이 변경되게 되고,

// 삭제할 상품 코드 목록
val params = arrayListOf("P001", "P002", "P003", "P004", "P005")

// SQLite Helper
val dbHelper:DBHelper = DBHelper(context, "데이터베이스명", null, 1)

// 쓰기 데이터베이스
val database = dbHelper.writableDatabase

// 삭제 실행
val tableName = "PRODUCT"
database.delete(PRODUCT, "PRDT_CODE in (?)", arrayOf(params.joinToString("', '", "'", "'")))

결과 Query는 아래와 같습니다.

DELETE
  FROM PRODUCT
 WHERE PRDT_CODE IN ('P001', 'P002', 'P003', 'P004', 'P005')

 

※ 이 글은 워드프레스에 작성한 글과 동일한 작성자의 동일한 글입니다.

https://royfactory.net/2023/07/03/kotlin-sqlite-in-use/

 

[Kotlin] How to use “IN” clause in SQLite - ROY FACTORY

Learn how to use the "IN" clause when SQLite sends and processes multiple conditions simultaneously.

royfactory.net

 

반응형