sql ignoring 대소문자의 문자열을 비교하는 방법
Oracle에서 비교되는 문자열의 대소문자를 무시하고 쿼리를 작성하려면 어떻게 해야 합니까?예를 들어 "천사", "천사", "천사", "천사", "천사", "천사"와 "천사"는 비교 시 모두 동일합니다.
필드 전체 값과 일치하는 경우
WHERE UPPER(fieldName) = 'ANGEL'
편집: 사용하고 싶은 코멘트에서:
SELECT
RPAD(a.name, 10,'=') "Nombre del Cliente"
, RPAD(b.name, 12,'*') "Nombre del Consumidor"
FROM
s_customer a,
s_region b
WHERE
a.region_id = b.id
AND UPPER(a.name) LIKE '%SPORT%'
UPER 키워드를 사용할 수 있습니다.
SELECT *
FROM Customers
WHERE UPPER(LastName) = UPPER('AnGel')
다음을 사용할 수 있습니다.
select * from your_table where upper(your_column) like '%ANGEL%'
그렇지 않으면 다음을 사용할 수 있습니다.
select * from your_table where upper(your_column) = 'ANGEL'
Gary Ray가 코멘트에서 제시한 바와 같이 your_column 필드 전후로 추가 문자가 없는 일치를 찾는 경우 효율적입니다.
두 개 이상의 문자열을 비교하기 전에 먼저 다음 명령을 수행합니다.
alter session set NLS_COMP=LINGUISTIC;
alter session set NLS_SORT=BINARY_CI;
이러한 2개의 스테이트먼트가 실행된 후 스트링을 비교할 수 있으며 대소문자가 구분되지 않습니다.예를 들어, 두 문자열 s1='Apple'과 s2='apple'이 있습니다. 위의 문장을 실행하기 전에 두 문자열을 비교하려면 두 문자열이 서로 다른 문자열로 처리되지만 두 개의 변경 문 실행 후 문자열을 비교할 때는 두 문자열 s1과 s2가 동일한 문자열로 처리됩니다.
이 두 가지 문구를 사용하는 이유
10gR2 대소문자를 구분하지 않기 위해서는 NLS_COMP=SYSTIC 및 NLS_SORT=SYST_CI를 설정해야 합니다.이들은 세션 수정이 가능하기 때문에 초기화 파라미터로 설정하는 것만큼 간단하지 않습니다.초기화 파라미터로 설정할 수 있지만 서버에만 영향을 주고 클라이언트 측에는 영향을 주지 않습니다.
Dreamel씨의 답변과 tuinstoel씨의 코멘트에 대한 더 자세한 내용.열의 데이터는 특정 대/소문자에 저장되지만 세션의 대/소문자를 구분하여 일치시킬 수 있습니다.
언어 검색 또는 대소문자를 구분하지 않는 검색을 사용하도록 세션 또는 데이터베이스를 변경할 수 있습니다.특정 정렬 순서를 사용하도록 인덱스를 설정할 수도 있습니다.
예
ALTER SESSION SET NLS_SORT=BINARY_CI;
영어 이외의 언어를 구사하기 시작하면 억양 등 억양에 민감하지 않은 언어를 추가로 지원합니다.일부 기능은 버전에 따라 다르므로 사용 중인 Oracle 버전에 대한 Globablization 문서를 참조하십시오.최신 제품(11g)은 이쪽
SELECT STRCMP("string1", "string2");
문자열이 같으면 0이 반환됩니다.
- string1 = string2이면 이 함수는 0을 반환합니다(대소문자를 제외).
- string1 < string2일 경우 이 함수는 -1을 반환합니다.
- string1 > string2일 경우 이 함수는 1을 반환합니다.
https://www.w3schools.com/sql/func_mysql_strcmp.asp
문자열 변환 비교를 피하려면 COLATE SQL_Latin1_General_CP1_을 사용합니다.CI_AS.
예:
SELECT UserName FROM Users
WHERE UserName COLLATE SQL_Latin1_General_CP1_CI_AS = 'Angel'
그러면 ANGEL, Angel, Angel 등 모든 사용자 이름이 반환됩니다.
정확한 구문은 기억나지 않지만 대소문자를 구분하지 않도록 테이블 열을 설정할 수 있습니다.하지만 더 이상 대소문자를 기준으로 매칭할 수 없고, '쿨'이 '쿨'과 일치하지 않도록 하려면 더 이상 매칭할 수 없으므로 주의하십시오.
언급URL : https://stackoverflow.com/questions/871578/how-to-compare-strings-in-sql-ignoring-case
'programing' 카테고리의 다른 글
Spring Boot에서 Error Page Filter를 비활성화하려면 어떻게 해야 합니까? (0) | 2023.02.27 |
---|---|
Wordpress에서 현지화된 스크립트의 Data 매개 변수 업데이트 (0) | 2023.02.27 |
Eslint는 Typescript 앱의 모든 enum이 이미 상위 범위에서 선언되었다고 말합니다. (0) | 2023.02.27 |
git 정보를 create-react-app에 추가합니다. (0) | 2023.02.27 |
@size(max = value )와 @min(value) 및 @max(value)의 차이 (0) | 2023.02.27 |