source

값이 소문자를 포함하는 행을 찾는 방법

factcode 2022. 11. 16. 21:25
반응형

값이 소문자를 포함하는 행을 찾는 방법

ColumnX가 소문자를 포함하는 모든 행을 제공하는 SQL 쿼리를 찾고 있습니다(예: "1234aaaaa5789").대문자도 마찬가지입니다.

SELECT * FROM my_table 
WHERE UPPER(some_field) != some_field

이것은 äø å å와 같은 재미있는 캐릭터와 함께 작동해야 합니다.테이블에는 언어 고유의 utf-8 조회를 사용해야 할 수 있습니다.

SELECT * FROM my_table WHERE my_column = 'my string'
COLLATE Latin1_General_CS_AS

이렇게 하면 대소문자가 구분됩니다.


편집

아래 조합에 문제가 있는 사람은 여기 kouton코멘트, 여기 tormuto의 코멘트에 기재되어 있습니다.

COLLATE Latin1_General_CS_AS

는 먼저 SQL 서버, 각 데이터베이스 및 문제의 컬럼에 대한 기본 조회를 확인하고 쿼리 식과의 기본 조회를 전달합니다.대조 목록은 여기에서 찾을 수 있습니다.

SELECT * FROM Yourtable 
WHERE UPPER([column_NAME]) COLLATE Latin1_General_CS_AS !=[Column_NAME]

utf8 인코딩된 테이블과 utf8_unicode_ci 컬럼에 대해 이 작업을 수행한 방법은 다음과 같습니다.

SELECT *
FROM table
WHERE UPPER(column) != BINARY(column)

모든 행을 소문자로 검색합니다.

SELECT *
FROM Test
WHERE col1 
LIKE '%[abcdefghijklmnopqrstuvwxyz]%'
collate Latin1_General_CS_AS

고마워 마네쉬 조셉

MS SQL Server에서는 COLATE 절을 사용합니다.

SELECT Column1
FROM Table1
WHERE Column1 COLLATE Latin1_General_CS_AS = 'casesearch'

추가 중COLLATE Latin1_General_CS_AS검색 대소문자를 구분합니다.

SQL Server 설치 기본 조합SQL_Latin1_General_CP1_CI_AS대소문자를 구분하지 않습니다.

테이블에 대한 임의의 컬럼의 조회를 변경하려면 다음 쿼리를 영구적으로 실행합니다.

ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(20)
COLLATE Latin1_General_CS_AS

테이블에 대한 열 정렬을 확인하려면 저장 프로시저를 수행합니다.

EXEC sp_help DatabaseName

출처 : SQL SERVER – Collate 대소문자를 구분하는 SQL 쿼리 검색

하급 사건을 알아내기 위해 이런 짓을 했어요

SELECT *
FROM YourTable
  where BINARY_CHECKSUM(lower(ColumnName)) = BINARY_CHECKSUM(ColumnName)
mysql> SELECT '1234aaaa578' REGEXP '^[a-z]';

대소문자를 구분하여 결과를 가져오려면 ColumnX에 BINARY를 추가해야 합니다.

SELECT * FROM MyTable WHERE BINARY(ColumnX) REGEXP '^[a-z]';

MySQL에 대한 전문가가 아닙니다. 다음 웹 사이트를 참조하십시오.REGEXP.

SELECT * FROM MyTable WHERE ColumnX REGEXP '^[a-z]';

Posgresql에서는~

예를 들어 다음과 같은 모든 행을 검색할 수 있습니다.col_a소문자로 된 글자가 있으면

select * from your_table where col_a '[a-z]';

필요에 따라 정규식을 수정할 수 있습니다.

안부 전해요,

-- SQL의 경우

SELECT *
FROM tablename
WHERE tablecolumnname LIKE '%[a-z]%';

논리적으로 볼 때 노히트의 해결책은 효과가 있었어야 했지만 효과가 없었다.SQL Management Studio가 이것을 최적화하려고 할 때 실수를 한 것 같습니다.

그러나 비교하기 전에 문자열을 수정함으로써 올바른 결과를 얻을 수 있었습니다.이 방법은 효과가 있었습니다.

SELECT [ExternalId]
FROM [EquipmentSerialsMaster] where LOWER('0'+[ExternalId]) COLLATE Latin1_General_CS_AS != '0'+[ExternalId]

언급URL : https://stackoverflow.com/questions/4123418/how-to-find-rows-that-have-a-value-that-contains-a-lowercase-letter

반응형