MySQL字符串的长度
简介:在本教程中,您将学习MySQL字符串长度函数,该函数允许您获取以字节和字符为单位的字符串长度。
MySQL支持各种字符集,例如latin1,utf8等。
您可以使用SHOW CHARACTER SET语句来获取MySQL数据库服务器支持的所有字符集。
SHOW CHARACTER SET;
Maxlen列存储字符集的字节数。
在MySQL中,字符串可以是任何字符集。
如果字符串包含1个字节的字符,则其长度(以字符为单位)和长度(以字节为单位)相等。
但是,如果字符串包含多字节字符,则其长度(以字节为单位)通常大于其长度(以字符为单位)。
要获取以字节为单位的字符串长度,请使用LENGTH函数,如下所示:
LENGTH(str);
您可以使用CHAR_LENGTH函数来获取以字符为单位的字符串长度,如下所示:
CHAR_LENGTH(str);
LENGTH和CHAR_LENGTH函数的示例
让我们看一下以下语句:
SET @s = CONVERT('MySQL String Length' USING ucs2); SELECT CHAR_LENGTH(@s), LENGTH(@s);
这个怎么运作。
首先,我们将MySQL字符串长度字符串转换为ucs2字符集,这是UCS-2 Unicode,包含2个字节的字符。
其次,我们使用CHAR_LENGTH和LENGTH函数来获取@s字符串的长度(以字节和字符为单位)。
由于@s字符串包含2个字节的字符,因此其字符长度为19,而其字节长度为38。
以下语句演示了如何使用1字节字符的LENGTH和CHAR_LENGTH函数:
SET @s = CONVERT('MySQL string length' USING latin1); SELECT LENGTH(@s), CHAR_LENGTH(@s);
我们为@s字符串使用latin1字符集。
latin1字符集包含1个字节的字符;因此,它的字节长度和字符长度相等。
请注意,某些字符集包含的字符其字节数可以更改,例如,对于utf8字符集:
SET @s = CONVERT('MySQL String Length' USING utf8); SELECT CHAR_LENGTH(@s), LENGTH(@s);
CHAR_LENGTH和LENGTH返回相同的结果。
但是,如果字符串包含特殊字符,则结果会有所不同。
请参见以下示例:
SET @s = CONVERT('á' USING utf8); SELECT CHAR_LENGTH(@s), LENGTH(@s);
MySQL字符串长度函数的应用
假设我们有一个posts表,该表存储博客文章,其中postid,title,excertpt和content四列。
(出于演示目的,我们使posts表尽可能简单)。
首先,我们使用CREATE TABLE语句创建posts表:
CREATE TABLE posts( postid int auto_increment primary key, title varchar(255) NOT NULL, excerpt varchar(255) NOT NULL, content text, pubdate datetime )Engine=InnoDB;
其次,我们使用INSERT语句将一些博客文章插入posts表中:
INSERT INTO posts(title,excerpt,content) VALUES('MySQL Length','MySQL string length function tutorial','dummy'), ('Second blog post','Second blog post','dummy');
我们可以使用CHAR_LENGTH函数来检查except是否超过20个字符,我们在摘录中附加省略号(...)作为以下查询:
SELECT postid, title, IF(CHAR_LENGTH(excerpt) > 20, CONCAT(LEFT(excerpt,20), '...'), excerpt) summary FROM posts;
在SELECT语句中,我们使用IF函数来检查摘录列的长度是否大于20,通过使用CONCAT语句将摘录与省略号(...)连接起来,否则就可以得到摘录。
在本教程中,我们向您展示了如何使用MySQL字符串长度函数来获取字符串的长度(以字节和字符为单位)。
参考
- http://dev.mysql.com/doc/refman/5.7/zh-CN/string-functions.html#function_length – MySQL LENGTH函数
- http://dev.mysql.com/doc/refman/5.7/zh-CN/string-functions.html#function_char-length – MySQL CHAR_LENGTH函数