SQL - 문자열을 검색하는 동안 대/소문자 무시
표에 다음 데이터가 있습니다.
PriceOrderShipped(출하된 가격)
Price Order Shipped Inbound(가격 주문 발송 완료)
Price Order Shipped Outbound(Price Order Shi
SQL에서 테이블에서 문자열을 검색하는 쿼리를 작성해야 합니다.문자열을 검색하는 동안 대소문자를 무시해야 합니다.아래 SQL 쿼리의 경우
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%PriceOrder%'
는 위의 모든 데이터를 제공하지만,
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%Priceorder%'
양보하지 않는다.
예를 들어, 'PriceOrder'나 'PriceOrder'를 검색해도 'PriceOrder'나 'PriceOrder'가 작동하지 않습니다.COLATE를 사용하여 아래 문의를 시도했지만 작동하지 않습니다.제가 어디가 잘못됐는지 알려주세요.
SELECT DISTINCT COL_NAME FROM myTable WHERE
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%'
이런 걸 쓰면...
SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%')
또는
SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%')
이것처럼.
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'
postgresql로.
대소문자를 구분하지 않는 검색과 유사한 질문과 답변을 참조하십시오. SQL Server는 대소문자를 무시합니다.
다음과 같은 방법을 사용해 보십시오.
SELECT DISTINCT COL_NAME
FROM myTable
WHERE COL_NAME COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%priceorder%'
사용하시는 것이 좋을 것 같습니다.SQL_Latin1_General_Cp1_CI_AS_KI_WI
당신의 대조 자료로요.질문에서 지정한 항목은 대소문자를 구분합니다.
여기에서 대조 목록을 볼 수 있습니다.
거의 모든 SQL 컴파일러에서 like 연산자는 대소문자를 구분하지 않습니다.그래도 대소문자를 구분하지 않는 경우 iLike 연산자를 사용하십시오.Upper() 메서드를 사용하여 대소문자를 변경하여 비교할 수도 있습니다.
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%PriceOrder%'
또는
SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%')
SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%')
ORACLE을 사용하는 사용자가 데이터베이스 수준에서 변경할 수 있는 경우
ALTER SESSION SET NLS_COMP=LINGUISTIC;
ALTER SESSION SET NLS_SORT=BINARY_CI;
주의: - Oracle
제가 사용하는 솔루션은 다음과 같습니다.
SELECT * FROM TABLE WHERE COLUMN ~* '.*search_keyword_any_case.*'
또, 서브스트링도 체크합니다.전반적으로 인터넷에서 접한 최고의 솔루션입니다.테이블 열에 대한 하위 문자열 대/소문자를 구분하지 않는 검색을 구현하기 위해 동일한 방법을 사용합니다.
대체 최적의 솔루션:
utf8 > utf8_unicode_ci 와 같은 특정 "collation" 을 사용할 수도 있습니다.그러면 모든 쿼리는 대소문자를 구분하지 않습니다.그러나 일부 지역에서는 데이터가 대문자로 표시될 수 있습니다.다른 케이스가 가능한 쌍둥이는 없는지 확인합니다(예: UNIQURE 열 사용).
QUERY 예:
https://prnt.sc/1vjwxd1
사용하는 테이블 설계 및 대조 : https://prnt.sc/1vjx3h5
"데이터베이스 설계를 잘하면 쿼리 작업을 많이 줄일 수 있습니다." - Me : )
LIKE 및 ILIKE는 문자 기반 열 데이터 내에서 패턴 매칭을 허용합니다.구문은 동일하지만 LIKE는 대소문자를 구분합니다.ILIKE는 대소문자를 구분하지 않습니다.postgresql을 사용하고 있기 때문에 문제 없습니다.
SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'
언급URL : https://stackoverflow.com/questions/16082575/sql-ignore-case-while-searching-for-a-string
'source' 카테고리의 다른 글
datetime2 데이터 유형을 datetime 데이터 유형으로 변환하면 값이 범위를 벗어납니다. (0) | 2023.04.07 |
---|---|
비프라이머리 키에 대한 외부 키 (0) | 2023.04.07 |
첫 번째 줄에 가입하는 방법 (0) | 2023.04.07 |
SQL Server 트랜잭션의 올바른 사용 (0) | 2023.04.07 |
SQL Server에서 테이블 이름을 변경하는 방법 (0) | 2023.04.07 |