`
yesjavame
  • 浏览: 695255 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

MySQL5中varchar 问题

阅读更多

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--> <!-- [if gte mso 10]> <mce:style><!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} --> <!-- [endif]-->


MySQL5varchar 字段最大长度

很早就了解MySQL5 中的varchar 字段可以大于255 个字节,仔细读了一下MySQL5 的文档,其中对varchar 字段类型描述:varchar(m) 变长字符串。M 表示最大列长度。M 的范围是065,535 (VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定,最大有效 长度是65,532 字节)。

MySQL 5.1 遵从标准SQL 规范,并且不删除VARCHAR 值的尾部空格。VARCHAR 保存时用一个字节或两个字节长的前缀+ 数据。如果VARCHAR 列声明的长度大于255 ,长度前缀是两个字节。

注:测试了一下使用UTF8 编码,varchar 的最大长度为21854 字节。


mysql varchar 字段长度超过限制长度自动截取的问题

mysql 手册的说明:

如果分配给CHARVARCHAR 列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误( 而不是警告) 并通过使用严格SQL 模式禁用值的插入。

MySQL 服务器模式说明:

MySQL 服务器可以以不同的SQL 模式来操作,并且可以为不同客户端应用不同模式。这样每个应用程序可以根据自己的需求来定制服务器的操作模式。

模式定义MySQL 应支持哪些SQL 语法,以及应执行哪种数据验证检查。这样可以更容易地在不同的环境中使用MySQL ,并结合其它数据库服务器使用MySQL

你可以用--sql-mode="modes " 选项启动mysqld 设置默认SQL 模式。如果你想要重设,该值还可以为空(--sql-mode ="")

你还可以在启动后用SET [SESSION|GLOBAL] sql_mode='modes ' 语句设置sql_mode 变量来更改SQL 模式。设置 GLOBAL 变量时需要拥有SUPER 权限,并且会影响从那时起连接的所有客户端的操作。设置SESSION 变量只影响当前的客户端。任何客户端可以随时更改自己的会话 sql_mode 值。

Modes is 是用逗号(‘’) 间隔开的一系列不同的模式。你可以用SELECT @@sql_mode 语句查询当前的模式。默认值是空( 没有设置任何模式)

主要重要sql_mode 值为:

· ANSI

更改语法和行为,使其更符合标准SQL

· STRICT_TRANS_TABLES

如果不能将给定的值插入到事务表中,则放弃该语句。对于非事务表,如果值出现在单行语句或多行语句的第1 行,则放弃该语句。本节后面给出了更详细的描述。

· TRADITIONAL

Make MySQL 的行为象 传统”SQL 数据库系统。该模式的简单描述是当在列中插入不正确的值时 给出错误而不是警告 释:一旦发现错误立即放弃INSERT/UPDATE 。如果你使用非事务存储引擎,这种方式不是你想要的,因为出现错误前进行的数据更改不会 滚动 ,结果是更新 只进行了一部分

本手册指 严格模式 ,表示至少STRICT _TRANS_TABLESSTRICT _ALL_TABLES 被启用的模式。

分享到:
评论

相关推荐

    Mysql中varchar长度设置方法

    关于`NVARCHAR`,它在MySQL 4.1以下的版本中,无论存储的是英文还是中文,每个字符都会占用2个字节,这是为了存储Unicode数据,避免乱码问题。而在4.1及以上版本,`VARCHAR`已经足够处理UTF-8编码的中文字符,因此`...

    对比MySQL中int、char以及varchar的性能

    总的来说,MySQL中的int、char和varchar在性能上的差异并非显著到足以成为决定性因素。开发者应根据实际需求,如数据的类型、大小、预期的增长、是否需要索引以及对可读性和可维护性的要求,来综合考虑选择哪种数据...

    char和varchar在mysql中的效率怎样.docx

    在MySQL数据库中,`CHAR`和`VARCHAR`是两种常见的字符串数据类型,它们在存储和处理数据时具有不同的效率特点。理解这两种类型的差异对于优化数据库性能至关重要。 `CHAR`是一种固定长度的数据类型,这意味着无论...

    MySQL动态修改varchar长度的方法

    5. 虽然`VARCHAR`在存储时会去除尾部的空格,但在某些版本的MySQL中(如5.1及以后),它遵循SQL标准不再删除尾部空格,这对于数据一致性是有好处的,但可能会占用更多的存储空间。 总的来说,动态修改`VARCHAR`长度...

    MySQL中把varchar类型转为date类型方法详解

    在MySQL和Oracle这两个广泛使用的数据库管理系统中,我们经常遇到需要将字符串(varchar)类型的日期转换为日期(date)类型的情况。这通常是因为原始数据以字符串格式存储,而我们需要对这些日期进行比较、排序或...

    MySQL中VARCHAR与CHAR格式数据的区别

    在MySQL数据库中,CHAR和VARCHAR是两种常见的字符串数据类型,它们在存储和处理方式上有着显著的区别,这对于数据库设计和性能优化至关重要。 首先,CHAR是一种固定长度的数据类型。这意味着无论你存储的实际数据有...

    Mysql varchar大小长度问题介绍

    综上所述,了解并掌握VARCHAR类型在MySQL中的大小长度限制以及计算方法,对于优化数据库设计和避免潜在的存储问题至关重要。在设计表结构时,应考虑到字符编码、行定义长度和存储空间的限制,以确保数据的有效存储和...

    MYSQL中 char 和 varchar的区别

    在MySQL数据库中,CHAR和VARCHAR是两种常用的字符串数据类型,它们在存储和处理字符串时有显著的区别。理解这些差异对于优化数据库性能和节省存储空间至关重要。 首先,CHAR和VARCHAR都是预定义长度的数据类型,但...

    mysql问题,常见的mysql面试问题

    ### MySQL常见面试问题详解 #### 1. MySQL简介与特性 ...以上内容涵盖了MySQL面试中常见的几个问题及其解答思路。希望这些知识点能够帮助你更好地理解和掌握MySQL的相关知识,并在面试中表现出色。

    MySQL数据类型varchar详解

    MySQL中的`VARCHAR`数据类型是用于存储可变长度的字符串数据的,它的主要优势在于空间效率,因为它只存储实际输入的字符数量,不像`CHAR`数据类型会预留固定长度的空间。下面将详细介绍`VARCHAR`的逻辑意义、最大...

    MySQL数据库中把int转化varchar引发的慢查询

    5. **优化查询条件**:确保查询条件能够有效利用索引,例如,避免在`varchar`字段上使用模糊匹配或非前缀查询。 此外,了解MySQL的优化工具也很重要,如`EXPLAIN`用于分析查询计划,`ANALYZE TABLE`用于更新统计...

    浅析Oracle中char和varchar2的区别 电脑资料.docx

    Oracle 中 char 和 varchar2 的区别 Oracle 中 char 和 varchar2 是两种常用的字符串数据类型,它们之间的区别是很多开发者经常忽视的。下面我们将详细分析 Oracle 中 char 和 varchar2 的区别。 首先,char 是定...

    解决C#操作Mysql时中文乱码问题(真的解决了)

    在C#编程中,与MySQL数据库进行交互时,可能会遇到中文字符显示为乱码的问题。这个问题通常是由于编码不一致或设置不当导致的。本篇文章将深入探讨如何解决C#操作MySQL时的中文乱码问题,并提供相关的源码示例。 ...

    MySQL中CHAR和VARCHAR类型演变和详解

    MySQL中的CHAR和VARCHAR是两种常见的字符串数据类型,用于存储文本数据。它们在数据库设计和优化中扮演着重要的角色,理解它们的区别和使用场景至关重要。 首先,让我们深入了解一下两者的演变。在MySQL 5.0.3之前...

    mysql varchar类型求和实例操作

    3、在数据量少的时候可以使用sum()函数直接求和,因为MySQL中它可以自动识别是字符串类型还是数字类型。 4、以上适用于整数,或者是数据量小,要是数据量太大,并且精度较高不适用,那么就可以考虑使用MySQL 的CAST...

Global site tag (gtag.js) - Google Analytics