月度归档:2017年09月

mssql 将多行数据组合为一行的方法—组合字符串方法


mssql中,我们常常需要做一个动作,就是将某一字段,
按照一定的规则组合成我们所需的字符串样式,下文将讲述如何组合字符串


 create table A 
(keyId int identity,info varchar(10))
go
insert into A (info)
values('a'),('B'),('DDDD'),('C'),
('d'),('E'),('F'),('g')
--------------组合字符串
declare @info varchar(max)
set @info =''
select @Info =@info +'|'+info from A 
print '组合后的字符串:'+@Info 

truncate table A
drop table A 
go

mssql 中 char nchar varchar nvarchar 区别及用途说明


char nchar varchar nvarchar简介


1 存储内容方式

char:存储为ansi字符(亚洲字符集),当存储内容不足长度时,会自动补齐英文半角空格
nchar:存储内容为unicode字符(世界字符集合,可以存储任何内容的字符),当存储内容不足长度时,会自动补齐英文半角空格
varchar:存储为ansi字符(亚洲字符集),当存储内容不足长度时,会自动降低占用的存储空间
nvarchar:存储内容为unicode字符(世界字符集合,可以存储任何内容的字符),会自动降低占用的存储空间

从存储方式上我们可以看出,以上四种类型
主要是存储长度和存储的格式上存在不同
从用途上分析,如果系统应用于世界范围,建议使用nchar nvarchar 对内容进行存储,可以避免存储的字符出现乱码


2 存储容量不同

char/varchar:按字节的方式存储, 每一个字符占用一个字节
nchar/nvarchar:按字符的方式存储,每一个字符占用两字节


char/varchar:最大可存储8000个字符
nchar/nvarchar:最大可存储4000个字符

3 四种类型的优缺点

char/nchar:优点占用空间一致,方便数据库存储页定义,避免页填充不足
不足之处 如果字符串长度多变,会浪费大量的存储空间
nvarchar:相对于varchar存储的优点,可以避免存储内容的乱码,不足之处如果存储的内容都是英文,那么浪费一倍的存储空间

4 四种类型的选择方式



如果存储长度确定,并且存储内容包含非英文的内容 我们应选择nchar
如果存储长度确定,并且存储内容为英文的内容 我们应选择char
如果存储长度不确定,并且存储内容包含非英文的内容 我们应选择nvarchar
如果存储长度不确定,并且存储内容为英文的内容 我们应选择varchar

例:
存储空间大小的分析

  declare @a char(10)
declare @b nchar(10)
declare @c varchar(10)
declare @d nvarchar(10)

select datalength(@a) as [a占用存储空间],len(@a) as [a长度],
datalength(@b) as [b占用存储空间],len(@b) as [b长度],
datalength(@c) as [c占用存储空间],len(@c) as [c长度],
datalength(@d) as [d占用存储空间],len(@d) as [d长度]
----------------------------------------------------------
set @a ='maomao365'
set @b ='maomao365'
set @c ='maomao365'
set @d ='maomao365'
select datalength(@a) as [a占用存储空间],len(@a) as [a长度],
datalength(@b) as [b占用存储空间],len(@b) as [b长度],
datalength(@c) as [c占用存储空间],len(@c) as [c长度],
datalength(@d) as [d占用存储空间],len(@d) as [d长度]
--------------------------------------------------------------
set @a ='猫猫小屋'
set @b ='猫猫小屋'
set @c ='猫猫小屋'
set @d ='猫猫小屋'
select datalength(@a) as [a占用存储空间],len(@a) as [a长度],
datalength(@b) as [b占用存储空间],len(@b) as [b长度],
datalength(@c) as [c占用存储空间],len(@c) as [c长度],
datalength(@d) as [d占用存储空间],len(@d) as [d长度]
 


相关阅读:
MSSQL sql server 字符串函数 nchar 功能简介
MSSQL sql server 字符串函数 char 功能简介