mysql如何处理varchar与nvarchar类型中的特殊字符

如果你每次建数据表的时候固执的使用varchar,那么你可能会遇到以下的问题:

现在saleUserName的字段类型为varchar(50)

update TableNameset saleUserName='小覃祝你⑭快乐' where ID=87

select * from TableName where ID=87

why?SaleUserName字段里的文字怎么变成这样了。⑭这个符号怎么变成了?

好的,那么我现在将saleUserName的字段类型改为nvarchar(50)呢

updateTableNameset saleUserName='小覃祝你⑭快乐' where ID=87

select * from TableName where ID=87

What!?怎么还是一样!

那么,稍微改一下,在参数值前面加上N。现在可以看到调皮的⑭出来了。

updateTableNameset saleUserName=N'小覃祝你⑭快乐' where ID=87

------加上N代表存入数据库时以Unicode格式存储。

----------------------------------------------------------总结的时候,我总是得召唤出这么华丽的分割线-----------------------------------------------------------------

unicode,以前学习的时候看过,根本没留心。那么好,百度一下,百度百科是这么说的:Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。

nvarchar和ntext就是可以容纳unicode的类型,所以才能存储调皮的⑭等特殊字符。

以前根本没留意过这些数据类型,看到说是存unicode类型的,可是根本不知道unicode为何物。码农就是这么任性,不够重视这些东西。

(0)

相关推荐

  • 探究MySQL中varchar的定义长度

    UTF8字符集下: SQL>create table test(id int auto_increment,name varchar(10),primary key(id)); SQL>insert into test values(null,'1234567890'); Query OK, 1 row affected (0.00 sec) SQL>insert into test values(null,'一二三四五六七八九十'); Query OK, 1 row affected

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

    最近一周接连处理了2个由于int向varchar转换无法使用索引,从而引发的慢查询. CREATE TABLE `appstat_day_prototype_201305` ( `day_key` date NOT NULL DEFAULT '1900-01-01', `appkey` varchar(20) NOT NULL DEFAULT '', `user_total` bigint(20) NOT NULL DEFAULT '0', `user_activity` bigint(20)

  • mysql中char与varchar的区别分析

    char与varchar的区别 char (13)长度固定, 如'www.jb51.net' 存储需要空间 12个字符 varchar(13) 可变长 如'www.jb51.net' 需要存储空间 13字符, 从上面可以看得出来char 长度是固定的,不管你存储的数据是多少他都会都固定的长度.而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置.所以实际应用中用户可以根据自己的数据类型来做. 再看看char,与varchar在速度上的区别吧. 复制代码 代码如下: mysal>

  • mysql VARCHAR的最大长度到底是多少

    以前一直都认为有两个字节来记录长度(长度小也可以用一个字节记录),所以这个问题当时觉得就挺无聊的不过后来群里有人给了解释,突然才发现原来事情不是这么简单 MYSQL COMPACT格式,每条记录有一个字节来表示NULL字段分布,如果表中有字段允许为空,则最大只能定到65532,如果没有字段允许为空,则那个字节可以节省,最大可以定义到65533,不知道是不是这个原因 于是上网看了些资料,又在本地做了些实验,原来vachar的最大长度真的是不定的(根据是否有非空字段来决定) 在本地做了下实验,inn

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

    如下表: 先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序 语法:select str_to_date(class_time,'%Y%m%d %H:%i:%s') a from a order by a desc ; 下面接着看下oracle中varchar类型的日期格式转换date类型 oracle中varchar类型的日期格式转换date类型 SELECT to_char(to_date(m.ma_datetime,'yyyy-MM-dd hh24:mi

  • Mysql varchar大小长度问题介绍

    4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字.字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同. 1.限制规则 字段的限制在字段定义的时候有以下规则: a) 存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字

  • MySQL动态修改varchar长度的方法

    虽然这种情况不应该发生,通常像我们关系型数据库,我们应该是事先设计好,以后不能改动,但是由于之前工作的疏忽,其实说实话,也不仅仅是我个人的疏忽,主要是沟通上的原因,当然数据库毕竟是我设计的,所以,还是自我批评一下. 说一下情况:MySQL字段有个varchar值字段设置的太短了,设置了30个,(我依稀记得varchar是可扩展的,当然现实并不容忍我的依稀),所以我只能找一个方法在保证数据库数据不变的情况下,动态修改varchar字段的长度,找了一段时间,终于让我找到了. alter table

  • Mysql中varchar长度设置方法

    如果某一项中设置的是varchar(50) 那么对英文当然是50 那么对中文呢 utf-8的中文占3个字节 那么,这个varchar(50)是不是只能存16个汉字了? mysql varchar(50) 不管中文 还是英文 都是存50个的 MySQL5的文档,其中对varchar字段类型这样描述:varchar(m) 变长字符串.M 表示最大列长度.M的范围是0到65,535.(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,最大有效长度是65,532字节). 为何会这般变换?真

  • Mysql数据库中把varchar类型转化为int类型的方法

    在上篇文章给大家讲了MySQL数据库中把int转化varchar引发的慢查询,本文给大家介绍Mysql数据库中把varchar类型转化为int类型的方法,一起看看吧! mysql为我们提供了两个类型转换函数:CAST和CONVERT,现成的东西我们怎能放过? CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值. 这个类型 可以是以下值其中的 一个: BINARY[(N)] CHAR[(N)] DATE DATETIME DECIMAL SIGNED [INTEG

  • mysql如何处理varchar与nvarchar类型中的特殊字符

    如果你每次建数据表的时候固执的使用varchar,那么你可能会遇到以下的问题: 现在saleUserName的字段类型为varchar(50) update TableNameset saleUserName='小覃祝你⑭快乐' where ID=87 select * from TableName where ID=87 why?SaleUserName字段里的文字怎么变成这样了.⑭这个符号怎么变成了? 好的,那么我现在将saleUserName的字段类型改为nvarchar(50)呢 upd

  • MySQL中varchar和char类型的区别

    目录 前述 VARCHAR类型 VARCHAR适用情况 CHAR类型 测试 VARCHAR(5)与VARCHAR(200)的区别 总结 前述 VARCHAR和CHAR是两种最主要的字符串类型.不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关.下面的描述假设使用的存储引擎是InnoDB和/或者MyISAM.如果使用的不是这两种存储引擎,请参考所使用的存储引擎的文档. 先看看VARCHAR和CHAR值通常在磁盘上怎么存储.请注意,存储引擎存储CHAR或者VAR

  • Sqlserver中char,nchar,varchar与Nvarchar的区别分析

    1. char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达 到了10个字节,都要占去10个字节的空间.因为是固定长度,所以速度效率高.比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间.因为是固定长度,所以速度效率高. 2. VARCHAR存储变长数据如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,

  • sql中varchar和nvarchar的区别与使用方法

    问: sql server中的varchar和Nvarchar有什么区别啊,varchar好像是一个英文和一个汉字都站两个字节,而Nvarchar则是一个英文占一个字节,汉字占两个字节.可是这个对asp程序有什么影响? 答: varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节. nvarchar(n) 包含 n 个字符的可变长度 Unicode 字符数据.n

  • MySQL 如何处理隐式默认值

    有同学说遇到了主从不一致的问题. 大概情况是,从库是用mysqldump导出导入数据的方式创建的.创建成功后,在用mysqldump验证主从的表结构是否一致的时候,发现有些表定义不一致: 从他的比较结果可以看到,在从库端,有三个列的定义中被加入了"default null". 怀疑环境被人人为修改过,但是最终确认环境没有被动过.然后又做了一边测试,使用mysqldump导出数据,使用source将数据导入从库后,发现还是有这个现象,问是不是source命令有bug! 其实,这个跟MyS

  • MySQL数据类型varchar详解

    1.varchar(N)的逻辑意义从MySQL4.1开始,varchar (N)中的N指的是该字段最多能存储多少个字符(characters),不是字节数.不管是一个中英文字符或者数字.或者一个汉字,都当做一个字符.在4.1之前,N表示的是最大存储的字节数(bytes).2.varchar(N)到底能存多长的数据在mysql reference manual上,varchar最多能存储65535个字节的数据.varchar 的最大长度受限于最大行长度(max row size,65535byte

  • N字符在Sql Server字段类型中的重要性概述

    Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示 如果还为了这个纠结,就直接看看后面的解说,做决定吧. 一般如果用到中文或者其它特殊字符,我就会使用n开头的类型,否则的话直接使用var开头的. sql server中的varchar和Nvarchar有什么区别? 答: varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的

  • SQL Server数据类型char、nchar、varchar、nvarchar的区别浅析

    在SQL Server中,当我们设置字符型字段的时候,往往有很多个数据类型供我们选择,如:char nchar varchar nvarchar等,那么我们到底应该选择哪一个呢?下面就一一来描述其区别. char:固定长度,非Unicode字符数据,长度为n个字节.n的取值范围为1至8,000,存储大小是n个字节.char的SQL2003同义词为character. varchar:可变长度,非Unicode字符数据.n的取值范围为1至8,000.max指示最大存储大小是2^31-1个字节.存储

  • Mysql支持的数据类型(列类型总结)

    一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展. 扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形,并增加了BIT类型,用来存放位数据. 整数类型        字节       范围(有符号)      范围(无符号)          用途 TINYINT  

  • MySQL日期数据类型、时间类型使用总结

    MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型        存储空间       日期格式                 日期范围 ------------ ---------   --------------------- ----------------------------------------- datetime       8 bytes   YYYY-MM-DD HH:MM:SS   1000-01-01 00:00:00 ~ 9999-12-31

随机推荐