SQLite 문자열 비교 시 대소문자 문제 해결 방법
테이블 User의 구조와 값은 다음과 같다고 가정합니다.
UserName
1
User1
다음 SQL 문을 실행합니다.
SELECT * FROM [User] WHERE UserName = 'user1'
결과적으로 어떤 기록도 찾지 못했다.분명히 SQLite는 문자열을 비교할 때 기본적으로 대소문자에 민감하다.이것은 응용 프로그램에 좋지 않은 영향을 끼칠 것이다.예를 들어 사용자가 사용자 이름을 입력할 때 반드시 엄격하게 대소문자에 따라 입력해야 하는데 이것은 매우 좋지 않은 사용자 체험이다.사용자 테이블에 user와 USER 두 사용자가 동시에 존재할 수 있어 혼동을 일으키기 쉽다.
SQLite는 최근 몇 년 사이에 비로소 유행한 데이터베이스이기 때문에 중국어 자료가 매우 적다.Google은 다음과 같은 3가지 영어 자료를 제공합니다.
시나리오 1: LOWER, UPPER 및 대소문자 변환 함수 사용
SELECT * FROM [User] WHERE LOWER(UserName) = 'user1'
시나리오 2: 비교 시 대소문자 구분 없음 강제 선언
SELECT * FROM [User] WHERE UserName = 'user1' COLLATE NOCASE
프로젝트 3: 테이블을 만들 때 이 필드가 대소문자를 구분하지 않는다는 것을 성명합니다
CREATE TABLE [User] ( [UserName] NVARCHAR(20) COLLATE NOCASE );
만약 어떤 상황에서도 대소문자에 민감할 필요가 없다면 방안 3이 가장 좋은 해결 방안이다.만약 소량의 조회만 대소문자에 민감하지 않다면 방안 2를 사용할 수 있다.방안1은 함수를 사용했기 때문에 추가 성능 손실이 있을 수 있으므로 사용을 권장하지 않습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.