programing

MySQL에서 대문자를 확인하는 방법?

lovejava 2023. 10. 16. 21:26

MySQL에서 대문자를 확인하는 방법?

문자열이 대문자로만 구성되어 있는지 확인하고 싶습니다.RLIKE/REGEXP는 MySQL에서 대소문자 구분이 되지 않는다는 것을 알고 있어서 사용해 보았습니다.:upper:문자 클래스:

SELECT 'z' REGEXP '^[[:upper:]]+$';

이는 z가 소문자이긴 하지만 사실입니다.왜 그런 것일까요?

REGEXP는 이진 문자열과 함께 사용하는 경우를 제외하고 대소문자를 구분하지 않습니다.

http://dev.mysql.com/doc/refman/5.7/en/regexp.html

그러니 이 점을 염두에 두고 다음과 같은 일을 해보세요.

SELECT * FROM `users` WHERE `email` REGEXP BINARY '[A-Z]';

위의 예를 사용하면 하나 이상의 대문자가 포함된 전자 메일 목록을 얻을 수 있습니다.

저는 이것이 작동하고 regexp를 사용하지 않습니다.기본적으로 필드와 mysql 자체로 대문자가 된 필드를 비교합니다.

-- will detect all names that are not in uppercase
SELECT 
    name, UPPER(name) 
FROM table 
WHERE 
    BINARY name <> BINARY UPPER(name)
;

대소문자 구분 대조로 변경합니다.

CHARACTER SET latin1 COLLATE latin1_general_cs

그럼 이 질문을 해보세요

SELECT 'z' REGEXP '^[A-Z]+$'

가장 많이 투표한 답변은 제게 맞지 않아요. 오류가 납니다.

Character set 'utf8mb4_unicode_ci' cannot be used in conjunction with 'binary' in call to regexp_like.

MD5를 사용하여 원래 값과 소문자 값을 비교했습니다.

SELECT * FROM user WHERE MD5(email) <> MD5(LOWER(email));

언급URL : https://stackoverflow.com/questions/16558967/how-to-check-for-uppercase-letters-in-mysql