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)