Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL BIT_LENGTH() 함수는 멀티 바이트 안전합니까?


LENGTH() 함수와 마찬가지로 MySQL BIT_LENGTH() 함수는 멀티바이트 안전 함수가 아닙니다. CHAR_LENGTH() 또는 CHARACTER_LENGTH()와 같은 다중 바이트 안전 함수와 BIT_LENGTH() 함수 사이의 결과 차이는 특히 대부분의 문자가 2바이트로 인코딩되거나 UTF와 관련된 유니코드와 관련이 있다는 것을 알고 있습니다. -8 바이트 수가 변하는 경우. 아래 예에서 설명됩니다 -

예시

mysql> Select BIT_LENGTH('tutorialspoint');
+------------------------------+
| BIT_LENGTH('tutorialspoint') |
+------------------------------+
| 112                          |
+------------------------------+
1 row in set (0.00 sec)

위의 결과 집합은 'tutorialspoint' 문자열의 비트 길이가 아직 유니코드 문자로 변환되지 않았기 때문에 112임을 보여줍니다. 다음 쿼리는 그것을 유니코드 문자로 변환합니다 -

mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
Query OK, 0 rows affected (0.02 sec)

유니코드로 문자열을 변환한 후 결과는 112 대신 224가 됩니다. 왜냐하면 유니코드에서 단일 문자는 아래와 같이 2바이트를 사용하기 때문입니다. -

mysql> Select BIT_LENGTH(@A);
+----------------+
| BIT_LENGTH(@A) |
+----------------+
| 224            |
+----------------+
1 row in set (0.00 sec)