MySQL字符串长度

转载自  MySQL字符串长度

在本教程中,您将了解MySQL字符串长度函数,使您可以以字节为单位获取字符串的长度。

MySQL支持各种字符集,如latin1utf8等。可以使用SHOW CHARACTER SET语句来获取MySQL数据库服务器支持的所有字符集。

mysql> SHOW CHARACTER SET;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
| dec8     | DEC West European               | dec8_swedish_ci     |      1 |
| cp850    | DOS West European               | cp850_general_ci    |      1 |
| hp8      | HP West European                | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian           | koi8r_general_ci    |      1 |
| latin1   | cp1252 West European            | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European     | latin2_general_ci   |      1 |
| swe7     | 7bit Swedish                    | swe7_swedish_ci     |      1 |
| ascii    | US ASCII                        | ascii_general_ci    |      1 |
| ujis     | EUC-JP Japanese                 | ujis_japanese_ci    |      3 |
| sjis     | Shift-JIS Japanese              | sjis_japanese_ci    |      2 |
| hebrew   | ISO 8859-8 Hebrew               | hebrew_general_ci   |      1 |
| tis620   | TIS620 Thai                     | tis620_thai_ci      |      1 |
| euckr    | EUC-KR Korean                   | euckr_korean_ci     |      2 |
| koi8u    | KOI8-U Ukrainian                | koi8u_general_ci    |      1 |
| gb2312   | GB2312 Simplified Chinese       | gb2312_chinese_ci   |      2 |
| greek    | ISO 8859-7 Greek                | greek_general_ci    |      1 |
| cp1250   | Windows Central European        | cp1250_general_ci   |      1 |
| gbk      | GBK Simplified Chinese          | gbk_chinese_ci      |      2 |
| latin5   | ISO 8859-9 Turkish              | latin5_turkish_ci   |      1 |
| armscii8 | ARMSCII-8 Armenian              | armscii8_general_ci |      1 |
| utf8     | UTF-8 Unicode                   | utf8_general_ci     |      3 |
| ucs2     | UCS-2 Unicode                   | ucs2_general_ci     |      2 |
| cp866    | DOS Russian                     | cp866_general_ci    |      1 |
| keybcs2  | DOS Kamenicky Czech-Slovak      | keybcs2_general_ci  |      1 |
| macce    | Mac Central European            | macce_general_ci    |      1 |
| macroman | Mac West European               | macroman_general_ci |      1 |
| cp852    | DOS Central European            | cp852_general_ci    |      1 |
| latin7   | ISO 8859-13 Baltic              | latin7_general_ci   |      1 |
| utf8mb4  | UTF-8 Unicode                   | utf8mb4_general_ci  |      4 |
| cp1251   | Windows Cyrillic                | cp1251_general_ci   |      1 |
| utf16    | UTF-16 Unicode                  | utf16_general_ci    |      4 |
| utf16le  | UTF-16LE Unicode                | utf16le_general_ci  |      4 |
| cp1256   | Windows Arabic                  | cp1256_general_ci   |      1 |
| cp1257   | Windows Baltic                  | cp1257_general_ci   |      1 |
| utf32    | UTF-32 Unicode                  | utf32_general_ci    |      4 |
| binary   | Binary pseudo charset           | binary              |      1 |
| geostd8  | GEOSTD8 Georgian                | geostd8_general_ci  |      1 |
| cp932    | SJIS for Windows Japanese       | cp932_japanese_ci   |      2 |
| eucjpms  | UJIS for Windows Japanese       | eucjpms_japanese_ci |      3 |
| gb18030  | China National Standard GB18030 | gb18030_chinese_ci  |      4 |
+----------+---------------------------------+---------------------+--------+
41 rows in set

Maxlen列存储字符集的字节数。在MySQL中,一个字符串可以是任何字符集。 如果一个字符串包含1个字节的字符,则其字符长度和以字节为单位测量的长度相等。 但是,如果字符串包含多字节字符,则其字节长度通常大于字符长度。

要获取以字节为单位的字符串长度,请使用LENGTH函数,如下所示:

LENGTH(str);

可以使用CHAR_LENGTH函数获取字符串的长度,以字符为单位计算长度,如下所示:

CHAR_LENGTH(str);

 

LENGTH和CHAR_LENGTH函数的示例

我们来看看下面的内容:

mysql> SET @s = CONVERT('MySQL String Length' USING ucs2);
SELECT CHAR_LENGTH(@s), LENGTH(@s);
Query OK, 0 rows affected+-----------------+------------+
| CHAR_LENGTH(@s) | LENGTH(@s) |
+-----------------+------------+
|              19 |         38 |
+-----------------+------------+
1 row in set

上面查询语句是如何工作的?

  • 首先,我们将MySQL字符串长度字符串转换为ucs2字符集,这是UCS-2 Unicode,指定一个字符存储为2个字节。
  • 其次,分别使用CHAR_LENGTHLENGTH函数来获取@s字符串的长度(以字节为单位)。因为@s字符串以2个字节来存储每个字符,所以其字符长度为19,而字节长度为38 。

以下语句演示了LENGTHCHAR_LENGTH函数如何使用1个字节来存储每个字符:

SET @s = CONVERT('MySQL string length' USING latin1);
SELECT LENGTH(@s), CHAR_LENGTH(@s);

执行上面查询语句,得到以下结果 -

+------------+-----------------+
| LENGTH(@s) | CHAR_LENGTH(@s) |
+------------+-----------------+
|         19 |              19 |
+------------+-----------------+
1 row in set

我们使用latin1字符集来存储@s字符串。 latin1字符集是使用1个字节来存储每个字符的; 因此,其字节长度和字符长度相等。

请注意,某些字符集可以更改字符的存储字节数,例如,utf8字符集:

SET @s = CONVERT('MySQL String Length' USING utf8);
SELECT CHAR_LENGTH(@s), LENGTH(@s);

执行上面查询语句,得到以下结果 -

mysql> SET @s = CONVERT('MySQL String Length' USING utf8);
SELECT CHAR_LENGTH(@s), LENGTH(@s);
Query OK, 0 rows affected+-----------------+------------+
| CHAR_LENGTH(@s) | LENGTH(@s) |
+-----------------+------------+
|              19 |         19 |
+-----------------+------------+
1 row in set

CHAR_LENGTHLENGTH返回相同的结果。 但是,如果一个字符串有特殊字符,结果是不同的。 请参阅以下示例:

mysql> SET @s = CONVERT('á' USING utf8);
SELECT CHAR_LENGTH(@s), LENGTH(@s);
Query OK, 0 rows affected+-----------------+------------+
| CHAR_LENGTH(@s) | LENGTH(@s) |
+-----------------+------------+
|               1 |          2 |
+-----------------+------------+
1 row in set

中文字符串存储多少位?看看下面查询就知道了 -

mysql> SET @s = CONVERT('易百教程' USING utf8);
SELECT CHAR_LENGTH(@s), LENGTH(@s);
Query OK, 0 rows affected+-----------------+------------+
| CHAR_LENGTH(@s) | LENGTH(@s) |
+-----------------+------------+
|               4 |         12 |
+-----------------+------------+
1 row in set

 

一个应用程序的MySQL字符串长度函数

假设我们有一个posts表,用于存储具有四列:postidtitleexcerpt 和 content(为了演示目的,所以posts表尽可能简单)。

首先,我们使用CREATE TABLE语句创建posts表:

USE testdb;
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函数来检查是否有超过20个字符,如果超过了,则附加省略号(...),如下查询语句:

SELECT postid,title,IF(CHAR_LENGTH(excerpt) > 20,CONCAT(LEFT(excerpt,20), '...'),excerpt) summary
FROM posts;

执行上面查询语句,得到以下结果 -

+--------+------------------+-------------------------+
| postid | title            | summary                 |
+--------+------------------+-------------------------+
|      1 | MySQL Length     | MySQL string length ... |
|      2 | Second blog post | Second blog post        |
+--------+------------------+-------------------------+
2 rows in set

在SELECT语句中,我们使用IF函数来检查摘录列的长度是否大于20,并使用CONCAT语句将excerpt列的值与省略号(...)连接起来,否则只是获取全部摘录(excerpt)内容。

在本教程中,我们向您展示了如何使用MySQL字符串长度函数来获取字符串的长度(以字节为单位)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2015蓝桥杯省赛---java---C---1(隔行变色)

题目描述 Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。 小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,.... 现在小明想知道,从第2…

php公告滚动源码,10行js代码实现上下滚动公告效果方法

本文主要给大家介绍了关于利用10行js代码实现滚动公告效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。希望能帮助到大家。需求在最近的项目中需要实现公…

MySQL left()函数

转载自 MySQL left()函数 MySQL LEFT函数介绍 LEFT()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。 下面是LEFT()函数的语法 - LEFT(str,length);LEFT()函数接受两个参数: str是要提取子字符串的字符串。length是一个正整数&…

encipher.min.php,陌屿授权系统(5.7)最新版 网站授权 - 下载 - 搜珍网

压缩包 : e0a1fd64fcf962a8709ed861e2bd0205.zip 列表admin/pass.php360safe/360safe/360webscan.php360safe/webscan_cache.phpadmin/admin/add.phpadmin/addsite.phpadmin/adduser.phpadmin/daili.phpadmin/downfile.phpadmin/download.phpadmin/edit.phpadmin/getpwd.phpadm…

2020蓝桥杯省赛---java---B---10(整数小拼接)

题目描述 代码实现 package com.atguigu.lanqiao;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int k sc.nextInt();int[] array new int[n];for (int i 0; i < n; i…

word常识整理

wps启动方式&#xff1a; 1.在开始菜单中找到wps office进行启动 2.鼠标右击新建一个空白的word文档 wps快捷键以及技巧&#xff1a; 1.全选&#xff1a;ctrlA 2.复制&#xff1a;ctrlc 3.粘贴&#xff1a;ctrlv 4.保存&#xff1a;ctrls 5.查找&#xff1a;ctrlf wor…

[ASP.NET Core] Middleware

前言 本篇文章介绍ASP.NET Core里&#xff0c;用来处理HTTP封包的Middleware&#xff0c;为自己留个纪录也希望能帮助到有需要的开发人员。 ASP.NET Core官网 结构 在ASP.NET Core里&#xff0c;每个从「浏览器传入」的HTTP Request封包&#xff0c;会被系统封装为「HttpReques…

MySQL Replace()函数

转载自 MySQL Replace()函数 MySQL REPLACE字符串函数简介 MySQL为您提供了一个有用的字符串函数REPLACE()&#xff0c;它允许您用新的字符串替换表的列中的字符串。 REPLACE()函数的语法如下&#xff1a; REPLACE(str,old_string,new_string);REPLACE()函数有三个参数&am…

matlab实践作业,实验作业2 MATLAB作图.doc

实验作业2 MATLAB作图1、用plot,fplot 绘制函数ycos(tan(x))的图形。解&#xff1a;代码如下:xlinspace(-0.5,0.5,30);ycos(tan(pi*x));plot(x,y)结果&#xff1a;fplot([cos(tan(pi*x))],[-0.5,0.5])结果&#xff1a;注意事项&#xff1a; fplot([cos(tan(pi*x))],[-0.5,0.5])…

2015蓝桥杯省赛---java---C---6(奇妙的数字)

题目描述 思路分析 看到这题目想到的就是 for 循环遍历数字&#xff0c;然后计算它的平方和立方再去判断它们刚好使用0-9这10个数各一次。 代码实现 package com.kuang.study.lanqiao;/*** 创建人 wdl* 创建时间 2021/4/8* 描述*/ public class Main {public static void ma…

Excel常识整理

1.excel中的界面&#xff1a;功能选项卡、标题栏、单元格名称、 功能面板、编辑栏、工作表导航按钮、工作表标签。 2.输入内容&#xff1a;&#xff08;1&#xff09;直接在单元格中进行输入 &#xff08;2&#xff09;在函数的后面输入 3.撤销&#xff1a;ctrlz 4.返回撤…

MySQL substring()函数

转载自 MySQL substring()函数 在本教程中&#xff0c;我们将向您介绍MySQL SUBSTRING函数从字符串中提取子字符串。 SUBSTRING函数从特定位置开始的字符串返回一个给定长度的子字符串。 MySQL提供了各种形式的子串功能。 我们将在以下部分中检查SUBSTRING函数的每种形式。…

跨平台的.NET邮件协议MailKit组件解析

发起的.NET Core开源组织号召&#xff0c;进展的速度是我自己也没有想到的&#xff0c;很多园友都积极参与&#xff08;虽然有些人诚心砸场子&#xff0c;要是以我以前的宝脾气&#xff0c;这会应该被我打住院了吧&#xff0c;不过幸好是少数&#xff0c;做一件事总有人说好&am…

2015蓝桥杯省赛---java---C---9(打印大X)

题目描述 思路分析 找规律 代码实现 package com.kuang.study.lanqiao;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int x sc.nextInt();int y sc.nextInt();char [][] arr new char[y][y…

php快速学习方法,php快速入门学习方法

一、心态在学习之前要注意调整心态&#xff0c;下面的日子是决定成败的关键&#xff0c;每天都在思考编程问题&#xff0c;不仅要懂还要会要精&#xff0c;要找成就感。成就感是学习的动力&#xff0c;心态是学习的关键&#xff0c;大家一定要坚持不能因为一点不会就放弃学习&a…

PPT基础整理

1.ppt页面组成部分&#xff1a;标题栏、功能选项卡、大纲区、功能面板、工作区 备注区、状态栏 2.插入wps自带模板&#xff1a;设计–》点击想要插入的模板 3.ppt视图&#xff1a;普通视图、大纲视图、幻灯片视图、备注页视图、母版视图 4.幻灯片制作的三板斧&#xff1a; …

MySQL trim()函数

转载自 MySQL trim()函数 MySQL TRIM函数介绍 用户输入的数据通常不是我们所预期的。有时候&#xff0c;它的格式不正确&#xff0c;例如错误的情况&#xff0c;甚至有些甚至包含前导和尾随空格以及其他不需要的字符。 为了保持数据格式正确&#xff0c;在数据库中插入或更…

老司机实战Windows Server Docker:1 初体验之各种填坑

前言 Windows Server 2016正式版发布已经有近半年时间了&#xff0c;除了看到携程的同学分享了一些Windows Server Docker的实践经验&#xff0c;网上比较深入的资料&#xff0c;不管是中文或英文的&#xff0c;都还不太多。工作中对Windows Server 2016下的Docker&#xff0c…

DOS基础整理

一、操作系统&#xff1a; 1.管理和控制计算机操作系统中的软件和硬件资源 2.合理的组织计算机工作流程 3.以方便用户使用的程序集合 二、操作系统的分类&#xff1a; 1.字符界面————DOS 2.图形界面————windows 三、启动DOS窗口&#xff1a; winR&#xff0c;打…

MySQL find_in_set()函数

转载自 MySQL find_in_set()函数 MySQL FIND_IN_SET函数简介 MySQL提供了一个名为FIND_IN_SET()的内置字符串函数&#xff0c;允许您在逗号分隔的字符串列表中查找指定字符串的位置。 下面说明了FIND_IN_SET()函数的语法。 FIND_IN_SET(needle,haystack);FIND_IN_SET()函数…