마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 sqlite 중복 값 변경

0 추천
sqlite를 사용중인데 중복되는 이름을 입력 받으면 중복되는 이름 뒤에 _001, _002 ... 를 추가 해서 sqlite 에 저장 하려고 합니다. 어떻게 해야하나요..?
개미1 (1,260 포인트) 님이 2023년 5월 3일 질문

2개의 답변

0 추천

질문의 의도가 고유한 사용자 ID를 만들기 위한 것인지, 아니면 다른 뭔지가 궁금하네요.
ID 문제라면 자동증가 필드를 사용하시면 해결이 될 것 같은데 말이죠.

 

중복검사:

select 문으로 같은 데이터가 존재하는지 확인한다. select * from 테이블 where name ="이름" 과 같이 처리하면 되겠죠?('또는 select count(*) from 테이블 where name ="이름")

중복시 접미어를 추가해서 저장하는 방법은 약간 고민을 해보셔야 할 것 같아요. 접미어를 붙여서 이름 필드에 그냥 저장하게 되면

홍길동
홍길동_001
홍길동_002
홍길동_999

와 같이 저장이 되겠죠. 뒤에 붙이는 접미사는 언제나 변경이 될 수 있으므로 신규로 입력하는 경우는 어떤 접미어를 붙일 지 결정하기가 애매합니다. 그리고 사용자를 삭제할 수도 있기 때문에

홍길동
홍길동_002

와 같은 형태로 데이터가 저장될 수도 있으므로, 이걸 처리할 수 있는 규칙을 정하셔야 해요.

예를 들면, 칼럼을 하나 추가해서 홍길동이 중복될 경우
"홍길동", 1 과 같이 이름과 접미어 순서를 별도의 칼럼으로 저장하고 보여줄 때는 "홍길동_001"로 변환해서 보여주는 방법이 있겠죠. 그리고 홍길동이 여러명일 때는 접미어 숫자가 가장 큰 레코드에 +1을 해서 다음 접미어를 생성하면 될 것 같구요.

암튼, 중복이름 처리는 님이 규칙을 어떻게 정하느냐에 따라 처리방법이 달라지게 되므로 고민을 해서 설계하시기 바랍니다.

spark (227,470 포인트) 님이 2023년 5월 3일 답변
spark님이 2023년 5월 3일 수정
0 추천
쿼리 다 아신다는 가정하에  생각나는 방법만 적겠습니다

 

insert 쿼리 전에  select 문으로 저장할 이름 조건에 해당하는 Count 가져오시고

Count 값이 1 이상이면 insert 시에 이름에 해당 숫자 뒤에 붙여서 저장하시면 되지 않을까요?
비뢰광 (7,400 포인트) 님이 2023년 5월 3일 답변
...