10.1.9.1 결과 문자열
MySQL은 문자열을 반환하는 다수의 연산자와 함수가 있습니다. 이 섹션에서는 이러한 문자열의 문자 셋과 콜레 션에 대해 설명합니다.
문자열의 입력을 취득하여 문자열의 결과를 출력으로 반환하는 간단한 함수는 출력의 문자 집합 및 데이터 정렬은 주요 입력 값의 문자 집합 및 정렬 순서와 동일합니다. 예를 들어, UPPER(
는 문자 집합 및 정렬 순서가 X
)X
와 같은 문자열을 반환합니다. 똑같은 INSTR()
, LCASE()
, LOWER()
, LTRIM()
, MID()
, REPEAT()
, REPLACE()
, REVERSE()
, RIGHT()
, RPAD()
, RTRIM()
, SOUNDEX()
, SUBSTRING()
, TRIM()
, UCASE()
및 UPPER()
에 대해서도 마찬가지입니다.
참고 : REPLACE()
함수는 다른 어떤 함수와도 달리 문자열 입력 데이터 정렬을 무시하고 대소 문자를 구분 비교를 매번 실행합니다.
입력 문자열 또는 함수의 결과가 바이너리 문자열의 경우 문자열은 문자 세트도 데이터 정렬도 없습니다. 이것은 CHARSET()
와 COLLATION()
함수를 사용하여 확인할 수 있습니다. 두 함수 모두 인수가 바이너리 문자열임을 나타내는 binary
를 반환합니다.
mysql> SELECT CHARSET(BINARY 'a'), COLLATION(BINARY 'a');
+---------------------+-----------------------+
| CHARSET(BINARY 'a') | COLLATION(BINARY 'a') |
+---------------------+-----------------------+
| binary | binary |
+---------------------+-----------------------+
여러 문자열 입력을 결합하여 하나의 문자열 출력을 반환 연산 결과의 데이터 정렬 특정 다음 표준 SQL의 "통합 규칙 '이 적용됩니다.
명시적인
COLLATE
가 행해진 경우X
X
를 사용합니다.명시적인
COLLATE
과X
COLLATE
가 행해진 경우 오류가 발생합니다.Y
상기 이외의 경우 모든 데이터 정렬이
X
인 경우에는X
를 사용합니다.기타의 경우 결과에 데이터 정렬은 없습니다.
예를 들어, CASE ... WHEN a THEN b WHEN b THEN c COLLATE
로 지정되어있는 경우, 결과의 데이터 정렬은 X
ENDX
입니다. 똑같은 UNION
, ||
, CONCAT()
, ELT()
, GREATEST()
, IF()
및 LEAST()
에도 적용됩니다.
문자 데이터로 변환하는 연산의 경우이 연산의 결과 얻어진 문자열의 문자 셋과 콜레 션은 character_set_connection
과 collation_connection
시스템 변수 값으로 정의되어 있습니다. 이것은 CAST()
, CONV()
, FORMAT()
, HEX()
및 SPACE()
에만 적용됩니다.
문자열 함수에서 반환되는 결과의 문자 세트 또는 데이터 정렬에 대해 불확실한 경우 CHARSET()
또는 COLLATION()
함수를 사용하여 확인할 수 있습니다.
mysql> SELECT USER(), CHARSET(USER()), COLLATION(USER());
+----------------+-----------------+-------------------+
| USER() | CHARSET(USER()) | COLLATION(USER()) |
+----------------+-----------------+-------------------+
| test@localhost | utf8 | utf8_general_ci |
+----------------+-----------------+-------------------+