SQLServer特殊字符/生僻字与varchar

  • 时间:
  • 浏览:1
  • 来源:万人红黑大战棋牌_万人红黑大战棋牌官网

6

CAST(C2 AS VARCHAR(400)) AS C2_V

SELECT N'm²',N'm²'

GO

1

2

20

对于有有哪些特殊字符,可能不需要被使用到,比如用户姓名字段,如此 是都是就都可以 使用varchar类型了呢?

10

2

“䶮”字不都可以 在NVARCHAR模式下也能完好地显示哈!

建议使用NVARCHAR来存放非英文字符数据理由:

理由1:VARCHAR类型存放特殊字符或生僻字时指在乱码或字符被转变的什么的问题

理由2:对于中文字符,使用VARCHAR和NVARCHAR消耗同样的空间,对于英文字符,使用VARCHAR比NVARCHAR节省一倍的空间,但随着磁盘成本如此 低,其提升的性能和节省的成本有限。(例外:可能数据中指在一定量英文字符和一定量非英文字符,则都可以 考虑VARCHAR类型)

理由3:对于前要国际化的企业,后期将VARCHAR升级为NVARCHAR的成本太高或难以实现

理由4:使用VARCHAR存放非英文字符时,容易生成错误的预估值,尤其在执行LIKE例如前缀匹配的预估时。

)

SELECT C1,

对于有有哪些特殊字符,可能不需要被使用到,比如用户姓名字段,如此 是都是就都可以 使用varchar类型了呢?

INSERT INTO TB1(C1,C2)

本文转自yonghu86博客园博客,原文链接:http://www.cnblogs.com/huyong/p/78400491.html,如需转载请自行联系原作者

INSERT INTO TB1(C1,C2)

UNION

15

CREATE TABLE TB1

建议使用NVARCHAR来存放非英文字符数据理由:

理由1:VARCHAR类型存放特殊字符或生僻字时指在乱码或字符被转变的什么的问题

理由2:对于中文字符,使用VARCHAR和NVARCHAR消耗同样的空间,对于英文字符,使用VARCHAR比NVARCHAR节省一倍的空间,但随着磁盘成本如此 低,其提升的性能和节省的成本有限。(例外:可能数据中指在一定量英文字符和一定量非英文字符,则都可以 考虑VARCHAR类型)

理由3:对于前要国际化的企业,后期将VARCHAR升级为NVARCHAR的成本太高或难以实现

理由4:使用VARCHAR存放非英文字符时,容易生成错误的预估值,尤其在执行LIKE例如前缀匹配的预估时。显示结果如下: 

(

“䶮”字不都可以 在NVARCHAR模式下也能完好地显示哈!

14

12

当然都是,能避开特殊字符,还得考虑“有文化的父母”给子女来点生僻字以展示有文化!!!比如五代十国中南汉的创建者刘䶮就自认为很牛叉,于是这俩 人创了有另俩个“䶮”字,取意为飞龙在天,如此 牛叉的意义就不招varchar的“喜欢”,测试code如下:

8

SELECT N'®',N'®'

C2,

测试结果如下:

7

C2,

9

19

4

对于中文版的SQL SERVER,默认安装后使用的默认排序规则为Chinese_PRC_CI_AS,在此排序规则下,使用varchar类型来都可以 “正常存取”存放中文字符以及这俩 东南亚国家的字符,一起varchar类型在存放英文字符和数字时比nvarchar节省一半的存储空间,这俩 这俩 DBA都习惯使用varchar类型来存放字符数据,但这俩 便指在这俩 乱码隐患!

首先是特殊字符如上下标或版权字符,测试Code如下:

显示结果如下:

当然都是,能避开特殊字符,还得考虑“有文化的父母”给子女来点生僻字以展示有文化!!!比如五代十国中南汉的创建者刘䶮就自认为很牛叉,于是这俩 人创了有另俩个“䶮”字,取意为飞龙在天,如此 牛叉的意义就不招varchar的“喜欢”,测试code如下:测试结果如下:

CAST(C1 AS NVARCHAR(400)) AS C1_N,

8

5

3

7

1

SELECT N'刘䶮',N'刘䶮'

DROP TABLE TB1

C1 VARCHAR(400),

18

FROM  TB1

4

GO

3

都可以 明显地看一遍上标在varchar类型下转加进去普通数字2,而版权符号在varchar类型下直接就乱码。

CAST(C2 AS VARCHAR(400)) AS C2_V

6

FROM  TB1

CAST(C1 AS NVARCHAR(400)) AS C1_N,

C2 NVARCHAR(400)

11

5

SELECT C1,

都可以 明显地看一遍上标在varchar类型下转加进去普通数字2,而版权符号在varchar类型下直接就乱码。

13

17

16