MySQL长文本字段的选取

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL长文本字段的选取
+关注继续查看

某个字段需要存储 长文本类型的数据,长度可变,范围不清.

varchar最多能存储多大长度呢? 何种情况下用text更好?

以下内容就为探究这个问题:

微信截图_20230926022726.png

<1>.先将content字段设为varchar(255),则此字段只能最多存储255个字符数

package main

import "fmt"

func main() {

    var str string

    for i := 1; i <= 255; i++ {
        str += "a"
    }

    fmt.Println(str)

    fmt.Println(len(str))

}
输出为:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

255

将生成的255位的str,写入content字段,成功保存. 且与文本是 数字,英文 还是中文,全角还是半角无关.(自MySQL 5.0之后)


但如果写入更长的数据,则会从第255位开始,之后的都舍弃.

baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (还是255位,舍弃最后一个a) 可以写入,

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac (256位),无法写入


<2>.varchar类型的上限是 最多能存储65535个字节的数据(而不是字符; 即64KB),因而其上限和字符集有关,如果是latin1,则可以表示65532长度的字符数 (变长字段额外使用1或2个字节来记录实际数据长度、以及是否为NULL标识位,如果数据表只有一个varchar字段且该字段DEFAULT NULL,那么该varchar字段的最大长度为65532个字节,即65535-2-1=65532 byte)

字符集为utf-8时,则最多存 65532/3=2184465532/3=2184465532/3=21844个字符数,

尝试将content自动改为varchar(21844),报错如下:

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs。

微信截图_20230926022848.png

这是因为不仅受 存储限制,编码长度限制,还受到mysql单行长度限制,mysql一行记录所有长度不得超过65535。若定义的表中各字段长度超过这个值,则提示如上错误.

因为这张表还有一个int(11)类型的id,故而达不到21844这个长度.


将id字段删掉,只保留content这一个字段,在utf-8下,可成功设置为 varchar(21844),

如改为varchar(21845),则会继续报如上错误.

微信截图_20230926022903.png

<3>.如果继续以较大幅度提供后面的值,如 varchar(70000),则不会报错而将自动转为mediumtext类型.

微信截图_20230926022948.png

如将该字段字符集(及其相应的排序规则)改为latin1,则可成功设置为varchar(65532)

微信截图_20230926022959.png

如再提高至varchar(65533),则会报上面行大小太大的错误.

latin1字符集下,存储英文大小写,数字,都没有问题,但用来存储汉字,则会因为不能识别而被记录为?

微信截图_20230926023042.png

<4.>在在utf-8下, 且只有这一个字段,可成功设置为varchar(21844)情况下,经实际亲测,可以容纳21844个字符,超出部分将会被舍弃.

微信截图_20230926023055.png

微信截图_20230926023104.png

即一般情况下,如果长度小于2万,可用varchar,否则就要用text

微信截图_20230926023149.png


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
关系型数据库 MySQL 索引
mysql 布尔文本搜索
mysql 布尔文本搜索
70 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL长文本字段的选
MySQL长文本字段的选
57 0
MySQL长文本字段的选
|
6月前
|
关系型数据库 MySQL
Mysql文本函数
Mysql文本函数
51 1
|
7月前
|
JSON 关系型数据库 MySQL
【Python】【MySQL】Python将JSON数据以文本形式存放到MySQL的Text类型字段中
【Python】【MySQL】Python将JSON数据以文本形式存放到MySQL的Text类型字段中
123 0
|
12月前
|
存储 SQL JSON
不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
244 1
不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
|
12月前
|
缓存 关系型数据库 MySQL
关于mysql导入大文本txt文件
关于mysql导入大文本txt文件
160 0
关于mysql导入大文本txt文件
|
关系型数据库 MySQL Java
JAVA课程设计:Eclipse + MySQL 8.0.25 + 文本界面 + 学生信息管理系统
简单的学生信息管理系统,实现对用户类型的不同权限管理(增删改查).
181 1
JAVA课程设计:Eclipse + MySQL 8.0.25 + 文本界面 + 学生信息管理系统
|
存储 Java 大数据
MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据
MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据
187 0
MySQL---数据库从入门走向大神系列(九)-用Java向数据库读写大文本/二进制文件数据
|
存储 关系型数据库 MySQL
【mysql】文本字符串类型
【mysql】文本字符串类型
1803 0
【mysql】文本字符串类型
|
SQL 关系型数据库 MySQL
MySQL Case-max_allowed_packet过小是否会截取sql文本?
max_allowed_packet是否会截取sql文本呢
98 1
MySQL Case-max_allowed_packet过小是否会截取sql文本?
热门文章
最新文章
推荐文章
更多