mysql 에서 특수문자를 LOWER(), UPPER() 했을 때

SELECT 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπ', LOWER('ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπ'), UPPER('ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπ')

결과
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπ
αβγδεζηθικλμνξοπρστυφχψωαβγδεζηθικλμνξοπ
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠ

요약하자면 대문자화와 소문자화는 그리스어 같은 특수문자에도 적용된다.

µ 같은 소문자(?)는 UPPER()로 대문자화하면 Μ으로 대치되고, LOWER()로 소문자화 하면 µ가 그대로 남는다.

반대로 Δ 같은 그리스어 대문자는 대문자화 하면 그대로지만, 소문자화하면 δ로 바뀐다.

이게 얼핏 보면 µ 같은 소문자 기호를 단위로 많이 쓰다보니 소문자화 할때는 그대로인데, 대문자화 할 때는 영어 알파벳으로 바뀌는 걸로 오해할 수도 있다. 하지만 영어 대문자가 아닌 그리스문자 대문자이다.

주의.

ps.
µμ
위의 두 개가 다른 문자다.
코드가 각각 0xb5, 0x3bc
하나는 아스키시절 라틴어 영역. 두번째 것은 유니코드 그리스어 영역.
…문자코드의 세계는 어려워!

글쓴이 : Draco (https://draco.pe.kr)
크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.

2 Responses

  1. 구차니 댓글:

    으어? 크롬에서 이상하게 댓글달때 이름 이메일 웹사이트 저장이 안되네요 ㅠㅠ
    매번 치면서 댓글 답니다 흑흑 ㅠㅠ

    그나저나 ASCII 영역만 될줄 알았는데.. 당연히(?) 모든 영역에 대해서 upper / lower를 지원하나보네요 ㄷㄷ

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.