In MySQL, length and char length functions are used to find number of characters present in string. So which one is best to use and how it differs?

I often heard CHAR_LENGTH() is multibyte safe and trustable etc... so i wanted to know what is the actual difference between these two functions. So, here is my findings:

LENGTH() measures string length in "bytes"
CHAR_LENGTH() measures string length in "characters"

This is because of encoding method of characters in UTF-8. As given in Wiki, "UTF-8 uses one byte for any ASCII characters, all of which have the same code values in both UTF-8 and ASCII encoding, and up to four bytes for other characters"

Just run this example in mysql, then you will have a clear idea:

select length(_utf8 '©'), char_length(_utf8 '©');

| length(_utf8 '©')  | char_length(_utf8 '©')  |
|                  2             |                       1                  |

So using char_length() seems to be giving precise results.


Comments (0)
Leave a Comment

loader Posting your comment...